Cisco-IOS-XR-um-router-bgp-cfg

This module contains a collection of YANG definitions for Cisco IOS-XR router-bgp package configuration. This YANG module augme...

  • Version: 2021-05-31

    Cisco-IOS-XR-um-router-bgp-cfg@2021-05-31


    
      module Cisco-IOS-XR-um-router-bgp-cfg {
    
        yang-version 1;
    
        namespace
          "http://cisco.com/ns/yang/Cisco-IOS-XR-um-router-bgp-cfg";
    
        prefix um-router-bgp-cfg;
    
        import Cisco-IOS-XR-types {
          prefix xr;
        }
        import ietf-inet-types {
          prefix inet;
        }
        import Cisco-IOS-XR-um-snmp-server-cfg {
          prefix a1;
        }
        import Cisco-IOS-XR-um-vrf-cfg {
          prefix a2;
        }
        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 router-bgp package configuration.
         
         This YANG module augments the
         modules with configuration data.
         
         Copyright (c) 2019-2021 by Cisco Systems, Inc.
         All rights reserved.";
    
        revision "2021-05-31" {
          description
            "Added must statement under list instances router->bgp
           2021-03-15
             Added sr-policy under router-bgp->bgp->bestpath and
           router-bgp->vrf->bgp->bestpath
           2021-02-25
             Added multipath container under vrf->neighbors->address-family
           2021-02-17
             Added must constraints in af-group list
           2021-02-11
             Removed presence statement from match node under eigrp container
           2021-02-10
             Added labeled-unicast under best-external
           2021-02-04
             Added sr-policy under nexthop & igp-metric
           2021-02-03
             Added container option-b-asbr-only
           2020-11-16
             Added srte-metric and validation under nexthop
           2020-11-10
             Added mask-length under local-address-subnet as needed
           2020-10-22
             Added rpki-dropped-only/rpki-tested-only under
           soft-reconfiguration/inbound. Updated must statements accordingly
           to define proper constraints with new nodes.
           2020-09-30
             Added multipath under neighbor address-family
           2020-08-12
             Added route-target container under retain.
           Added per-nexthop-received-label under mode.
           Added appropriate when statements under retain/mode containers.
           Removed per-prefix under vrf as it's not supported.
           2020-08-05
             Added some must statements as needed
           2020-07-30
             Added when statement to local-labeled-route under address-family
           hierarchy and removed one presence statement as needed";
        }
    
        revision "2020-07-24" {
          description
            "Added internal under remove-private-as. Also added must statements
           under remove-private-as as appropriate.
           2020-06-05
           Removed unused nodes from vrf address-family
           Added constraint to nodes under as-format
           2020-05-17
           (1) Added enable/label-mode under as
           (2) Added srv6 under encapsulation-type
           (3) Added vpnv4/vpnv6/l2vpn nodes under advertise
           (4) Added segment-routing node under neighbors/neighbor/address-family
           (5) Changed integer range of multipath, message-log-buffer-size, purge-time
           (6) Added minimum-ipv6 node under nexthop/resolution/prefix-length
           (7) Changed sysdb path of log node and its chilren
           (8) Changed sysdb path of suppress node and its children
           (9) Added extended-nexthop-encoding node under suppress
           (10) Added update node under neighbor-group/address-families/address-family
           (11) Added retain-nbr-routes under graceful-restart
           
           2020-04-14
           Added rd augment to vrf model
           2020-03-13
           Added corresponding nodes for peer-set-id, adjacencies,
           peer-set and peer-node-sid";
        }
    
        revision "2019-06-10" {
          description
            "Establish semantic version baseline.";
        }
    
        revision "2019-03-30" {
          description "Initial version";
        }
    
        semver:module-version "3.0.0";
        semver:module-version "2.0.0";
        semver:module-version "1.0.0";
    
        typedef Bgp-address-family {
          type enumeration {
            enum "ipv4-unicast" {
              value 0;
              description "IPv4 unicast";
            }
            enum "ipv4-multicast" {
              value 1;
              description "IPv4 multicast";
            }
            enum "ipv4-labeled-unicast" {
              value 2;
              description "IPv4 labeled-unicast";
            }
            enum "ipv4-tunnel" {
              value 3;
              description "IPv4 tunnel";
            }
            enum "vpnv4-unicast" {
              value 4;
              description "VPNv4 unicast";
            }
            enum "ipv6-unicast" {
              value 5;
              description "IPv6 unicast";
            }
            enum "ipv6-multicast" {
              value 6;
              description "IPv6 multicast";
            }
            enum "ipv6-labeled-unicast" {
              value 7;
              description "IPv6 labeled-unicast";
            }
            enum "vpnv6-unicast" {
              value 8;
              description "VPNv6 unicast";
            }
            enum "ipv4-mdt" {
              value 9;
              description "IPv4 MDT";
            }
            enum "l2vpn-vpls-vpws" {
              value 10;
              description "L2VPN VPLS-VPWS";
            }
            enum "ipv4-rt-filter" {
              value 11;
              description "IPv4 rt-filter";
            }
            enum "ipv4-mvpn" {
              value 12;
              description "IPv4 MVPN";
            }
            enum "ipv6-mvpn" {
              value 13;
              description "IPv6 MVPN";
            }
            enum "l2vpn-evpn" {
              value 14;
              description "L2VPN EVPN";
            }
            enum "link-state-link-state" {
              value 15;
              description
                "Link-state link-state";
            }
            enum "vpnv4-multicast" {
              value 16;
              description "VPNv4 Multicast";
            }
            enum "vpnv6-multicast" {
              value 17;
              description "VPNv6 Multicast";
            }
            enum "ipv4-flowspec" {
              value 18;
              description "IPv4 flowspec";
            }
            enum "ipv6-flowspec" {
              value 19;
              description "IPv6 flowspec";
            }
            enum "vpnv4-flowspec" {
              value 20;
              description "VPNv4 flowspec";
            }
            enum "vpnv6-flowspec" {
              value 21;
              description "VPNv6 flowspec";
            }
            enum "l2vpn-mspw" {
              value 22;
              description "L2VPN MSPW";
            }
            enum "ipv4-sr-policy" {
              value 23;
              description "IPv4 SRPolicy";
            }
            enum "ipv6-sr-policy" {
              value 24;
              description "IPv6 SRPolicy";
            }
            enum "all-address-family" {
              value 25;
              description "All Address Families";
            }
          }
          description "Bgp address family";
        }
    
        typedef Bgp-attribute-code {
          type union {
            type uint32 {
              range "0 | 4..14";
            }
            type uint32 {
              range "6..255";
            }
            type enumeration {
              enum "AGGREGATOR" {
                value 7;
                description
                  "Aggregator attribute (7)";
              }
              enum "AIGP" {
                value 26;
                description
                  "AIGP attribute (26)";
              }
              enum "AS4-AGGREGATOR" {
                value 18;
                description
                  "AS4_AGGREGATOR attribute (18)";
              }
              enum "AS4-PATH" {
                value 17;
                description
                  "AS4_PATH attribute (17)";
              }
              enum "ATOMIC-AGGREGATE" {
                value 6;
                description
                  "Atomic aggrgate attribute (6)";
              }
              enum "ATTRSET" {
                value 128;
                description
                  "ATTR_SET attribute (128)";
              }
              enum "CLUSTER-LIST" {
                value 10;
                description
                  "Cluster List attribute (10)";
              }
              enum "COMMUNITY" {
                value 8;
                description
                  "Community attribute (8)";
              }
              enum "CONNECTOR" {
                value 20;
                description
                  "Connector attribute (20)";
              }
              enum "EXTENDED-COMMUNITIES" {
                value 16;
                description
                  "Extended community attribute (16)";
              }
              enum "LARGE-COMMUNITY" {
                value 32;
                description
                  "Large Community attribute (32)";
              }
              enum "LOCAL-PREF" {
                value 5;
                description
                  "Local Preference attribute (5)";
              }
              enum "LSATTR" {
                value 29;
                description
                  "Link-state attribute (29)";
              }
              enum "MULTI-EXIT-DISC" {
                value 4;
                description "MED attribute (4)";
              }
              enum "ORIGINATOR-ID" {
                value 9;
                description
                  "Originator attribute (9)";
              }
              enum "PMSI-TUNNEL" {
                value 22;
                description
                  "PMSI Tunnel attribute (22)";
              }
              enum "PPMP" {
                value 70;
                description
                  "PPMP attribute (70)";
              }
              enum "PREFIX-SID" {
                value 40;
                description
                  "Prefix-SID attribute (40)";
              }
              enum "SSA" {
                value 19;
                description
                  "SAFI specific attribute (19)";
              }
              enum "TUNNEL-ENCAP" {
                value 23;
                description
                  "Tunnel-Encapsulation attribute (23)";
              }
            }
          }
        }
    
        container as-format {
          description
            "Autonomous system number format";
          container asdot {
            must "not(../asplain)";
            presence
              "Indicates a asdot node is configured.";
            description "AS Dot format";
          }  // container asdot
    
          container asplain {
            must "not(../asdot)";
            presence
              "Indicates a asplain node is configured.";
            description "AS Plain format";
          }  // container asplain
        }  // container as-format
    
        container bmp {
          description
            "BGP Monitoring Protocol commands";
          container servers {
            description
              "BMP server configuration";
            list server {
              key "bmp-server-id";
              description
                "BMP server ID to configure";
              leaf bmp-server-id {
                type uint32 {
                  range "1..8";
                }
                description
                  "BMP server ID to configure";
              }
    
              container shutdown {
                presence
                  "Indicates a shutdown node is configured.";
                description
                  "Shutdown connection to BMP server";
              }  // container shutdown
    
              container host {
                presence
                  "Indicates a host node is configured.";
                description
                  "Hostname of BMP Server";
                leaf host-name {
                  type string {
                    length "1..1024";
                  }
                  mandatory true;
                  description
                    "Hostname of BMP Server";
                }
    
                leaf port {
                  type uint32 {
                    range "1..65535";
                  }
                  description
                    "BMP Server Listen Port";
                }
              }  // container host
    
              leaf initial-delay {
                type uint32 {
                  range "1..3600";
                }
                description
                  "Initial connect delay in sending BMP server updates. Default=0";
              }
    
              leaf flapping-delay {
                type uint32 {
                  range "60..3600";
                }
                description
                  "delay in connecting to BMP Server after a flap had been detected. Default=300";
              }
    
              leaf max-buffer-size {
                type uint32 {
                  range "1..4294967295";
                }
                description
                  "Set BMP message buffer size";
              }
    
              container initial-refresh {
                description
                  "Initial refresh to generate BGP updates. DEfault=1";
                container delay {
                  presence
                    "Indicates a delay node is configured.";
                  description
                    "Initial delay before sending route refresh request";
                  leaf initial-delay {
                    type uint32 {
                      range "1..3600";
                    }
                    mandatory true;
                    description
                      "Initial delay before sending route refresh request";
                  }
    
                  leaf spread {
                    type uint32 {
                      range "1..3600";
                    }
                    description
                      "Maximum additional random delay for initial Refresh Request";
                  }
                }  // container delay
    
                container skip {
                  presence
                    "Indicates a skip node is configured.";
                  description
                    "Skip sending Refresh request to Peers";
                }  // container skip
              }  // container initial-refresh
    
              leaf stats-reporting-period {
                type uint32 {
                  range "1..3600";
                }
                description
                  "Stats reporting period for BMP server. Default=0";
              }
    
              leaf description {
                type string {
                  length "1..1024";
                }
                description
                  "BMP server specific description";
              }
    
              leaf dscp {
                type enumeration {
                  enum "default" {
                    value 0;
                    description
                      "Set packets with default dscp (000000)";
                  }
                  enum "cs1" {
                    value 8;
                    description
                      "Set packets with CS1(precedence 1) dscp (001000)";
                  }
                  enum "af11" {
                    value 10;
                    description
                      "Set packets with AF11 dscp (001010)";
                  }
                  enum "af12" {
                    value 12;
                    description
                      "Set packets with AF12 dscp (001100)";
                  }
                  enum "af13" {
                    value 14;
                    description
                      "Set packets with AF13 dscp (001110)";
                  }
                  enum "cs2" {
                    value 16;
                    description
                      "Set packets with CS2(precedence 2) dscp (010000)";
                  }
                  enum "af21" {
                    value 18;
                    description
                      "Set packets with AF21 dscp (010010)";
                  }
                  enum "af22" {
                    value 20;
                    description
                      "Set packets with AF22 dscp (010100)";
                  }
                  enum "af23" {
                    value 22;
                    description
                      "Set packets with AF23 dscp (010110)";
                  }
                  enum "cs3" {
                    value 24;
                    description
                      "Set packets with CS3(precedence 3) dscp (011000)";
                  }
                  enum "af31" {
                    value 26;
                    description
                      "Set packets with AF31 dscp (011010)";
                  }
                  enum "af32" {
                    value 28;
                    description
                      "Set packets with AF32 dscp (011100)";
                  }
                  enum "af33" {
                    value 30;
                    description
                      "Set packets with AF33 dscp (011110)";
                  }
                  enum "cs4" {
                    value 32;
                    description
                      "Set packets with CS4(precedence 4) dscp (100000)";
                  }
                  enum "af41" {
                    value 34;
                    description
                      "Set packets with AF41 dscp (100010)";
                  }
                  enum "af42" {
                    value 36;
                    description
                      "Set packets with AF42 dscp (100100)";
                  }
                  enum "af43" {
                    value 38;
                    description
                      "Set packets with AF43 dscp (100110)";
                  }
                  enum "cs5" {
                    value 40;
                    description
                      "Set packets with CS5(precedence 5) dscp (101000)";
                  }
                  enum "ef" {
                    value 46;
                    description
                      "Set packets with EF dscp (101110)";
                  }
                  enum "cs6" {
                    value 48;
                    description
                      "Set packets with CS6(precedence 6) dscp (110000)";
                  }
                  enum "cs7" {
                    value 56;
                    description
                      "Set packets with CS7(precedence 7) dscp (111000)";
                  }
                }
                description
                  "Set IP DSCP (DiffServ CodePoint)";
              }
    
              leaf precedence {
                type enumeration {
                  enum "routine" {
                    value 0;
                    description
                      "Set packets with routine precedence (0)";
                  }
                  enum "priority" {
                    value 1;
                    description
                      "Set packets with priority precedence (1)";
                  }
                  enum "immediate" {
                    value 2;
                    description
                      "Set packets with immediate precedence (2)";
                  }
                  enum "flash" {
                    value 3;
                    description
                      "Set packets with flash precedence (3)";
                  }
                  enum "flash-override" {
                    value 4;
                    description
                      "Set packets with flash override precedence (4)";
                  }
                  enum "critical" {
                    value 5;
                    description
                      "Set packets with critical precedence (5)";
                  }
                  enum "internet" {
                    value 6;
                    description
                      "Set packets with internetwork control precedence (6)";
                  }
                  enum "network" {
                    value 7;
                    description
                      "Set packets with network control precedence (7)";
                  }
                }
                description "Set precedence";
              }
    
              leaf update-source {
                type xr:Interface-name;
                description
                  "Source to reach BMP server";
              }
    
              leaf vrf {
                type string {
                  length "1..1024";
                }
                description
                  "VRF for the BMP server";
              }
    
              container tcp {
                description
                  "Configure TCP related parameters";
                leaf keep-alive {
                  type uint32 {
                    range "0..7200";
                  }
                  description
                    "configure TCP keep alives to be exchanged between client and server";
                }
    
                leaf mss {
                  type uint32 {
                    range "68..10000";
                  }
                  description
                    "configure TCP maximum segment size";
                }
              }  // container tcp
            }  // list server
    
            container all {
              description
                "Common commands for all BMP servers";
              leaf max-buffer-size {
                type uint32 {
                  range "1..4294967295";
                }
                description
                  "Maximum buffer limit upto which BMP messages will be queued to TCP sockets.
                 If total size of BMP messages queued up for BMP sockets exceeds this set limit,
                 messages will be dropped. The maximum buf-size is 20% and default buf-size is 15%
                 of the platform virtual memory max-limit (aka rlimit). Please run
                 show bgp process performance-statistics
                 to see the individual values. Unit is in MegaBytes.";
              }
    
              container route-monitoring {
                description
                  "Enable Route Monitoring capability for the BMP servers.
                 BGP update messages will be regenerated with a table walk
                ";
                container policy {
                  description
                    "Specify if the routes packed in update messages should be
                   before or after the application of route-policy";
                  container post {
                    description
                      "pick up the routes after application of route-policy(post-policy)";
                    container inbound {
                      presence
                        "Indicates a inbound node is configured.";
                      description
                        "pick up the routes at inbound direction(peer router to self)";
                    }  // container inbound
                  }  // container post
                }  // container policy
              }  // container route-monitoring
            }  // container all
          }  // container servers
        }  // container bmp
    
        container router {
          description "Enable a routing process";
          container bgp {
            description
              "BGP configuration subcommands";
            container instances {
              description
                "Specify a instance name";
              list instance {
                must "as";
                key "instance-name";
                description
                  "Specify a instance name";
                leaf instance-name {
                  type xr:Cisco-ios-xr-string {
                    length "1..32";
                  }
                  description
                    "Specify a instance name";
                }
    
                list as {
                  key "as-number";
                  description "bgp as-number";
                  leaf as-number {
                    type xr:Bgp-as-number;
                    description "bgp as-number";
                  }
    
                  container rpki {
                    description "Configure RPKI";
                    container servers {
                      description
                        "Configure RPKI cache-servers";
                      list server {
                        key "server-id";
                        description
                          "Configure RPKI cache-servers";
                        leaf server-id {
                          type xr:Cisco-ios-xr-string {
                            length "1..1024";
                          }
                          description
                            "Configure RPKI cache-servers";
                        }
    
                        container bind-source {
                          description
                            "Specify a bind source for RPKI cache-server";
                          container interface {
                            description
                              "Specify a source interface to bind the cache-server transport";
                            leaf interface-name {
                              type xr:Interface-name;
                              description
                                "Interface Name";
                            }
                          }  // container interface
                        }  // container bind-source
    
                        container refresh-time {
                          description
                            "Time between sending serial-queries for the RPKI cache-server";
                          leaf refresh-time-value {
                            type uint32 {
                              range "15..3600";
                            }
                            description
                              "Refresh time (in seconds)";
                          }
    
                          container off {
                            presence
                              "Indicates a off node is configured.";
                            description
                              "Do not send serial-queries periodically";
                          }  // container off
                        }  // container refresh-time
    
                        container response-time {
                          description
                            "Time to wait for a response from the RPKI cache-server";
                          leaf response-time-value {
                            type uint32 {
                              range "15..3600";
                            }
                            description
                              "Response time (in seconds)";
                          }
    
                          container off {
                            presence
                              "Indicates a off node is configured.";
                            description
                              "Wait indefinitely for a response";
                          }  // container off
                        }  // container response-time
    
                        leaf purge-time {
                          type uint32 {
                            range "30..65535";
                          }
                          description
                            "Purge time (in seconds)";
                        }
    
                        leaf username {
                          type string {
                            length "1..1024";
                          }
                          description
                            "Specify a (SSH) username for the RPKI cache-server";
                        }
    
                        leaf password {
                          type string {
                            length "1..1024";
                          }
                          description
                            "Specify a (SSH) password for the RPKI cache-server";
                        }
    
                        container transport {
                          description
                            "Specify a transport method for the RPKI cache-server";
                          container tcp {
                            description
                              "Connect to the RPKI cache-server using TCP (unencrypted)";
                            leaf port {
                              type uint32 {
                                range "1..65535";
                              }
                              must
                                "not(../../ssh/port)";
                              description
                                "Specify a port number for the RPKI cache-server transport";
                            }
                          }  // container tcp
    
                          container ssh {
                            description
                              "Connect to the RPKI cache-server using SSH";
                            leaf port {
                              type uint32 {
                                range "1..65535";
                              }
                              must
                                "not(../../tcp/port)";
                              description
                                "Specify a port number for the RPKI cache-server transport";
                            }
                          }  // container ssh
                        }  // container transport
    
                        container shutdown {
                          presence
                            "Indicates a shutdown node is configured.";
                          description
                            "Shutdown the RPKI cache-server";
                        }  // container shutdown
                      }  // list server
                    }  // container servers
    
                    container routes {
                      description
                        "Configure an RPKI route";
                      list route {
                        key "address minimum-prefix-length maximum-prefix-length origin-as-number";
                        description
                          "Configure an RPKI route";
                        leaf address {
                          type inet:ip-address-no-zone;
                          description
                            "Configure an RPKI route";
                        }
    
                        leaf minimum-prefix-length {
                          type union {
                            type uint32 {
                              range "0..32";
                            }
                            type uint32 {
                              range "0..128";
                            }
                          }
                          description
                            "Minimum prefix length";
                        }
    
                        leaf maximum-prefix-length {
                          type union {
                            type uint32 {
                              range "1..32";
                            }
                            type uint32 {
                              range "1..128";
                            }
                          }
                          description
                            "Maximum prefix length (Default 32/128 for IPv4/IPv6)";
                        }
    
                        leaf origin-as-number {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          description
                            "Origin Autonomous System number";
                        }
                      }  // list route
                    }  // container routes
                  }  // container rpki
    
                  container address-families {
                    description
                      "Enter Address Family command mode";
                    list address-family {
                      key "af-name";
                      description
                        "Enter Address Family command mode";
                      leaf af-name {
                        type Bgp-address-family;
                        description
                          "Enter Address Family command mode";
                      }
    
                      container vrf {
                        when
                          "../af-name = 'vpnv4-unicast' or ../af-name = 'vpnv6-unicast'";
                        description
                          "Specify configurations to be inherited to all vrfs";
                        container all {
                          presence
                            "Indicates a all node is configured.";
                          description
                            "Specify configurations to be inherited to all vrfs";
                          container source {
                            description
                              "Source import route-targets from import-policy";
                            container rt {
                              description
                                "Source import route-targets from import-policy";
                              container import-policy {
                                presence
                                  "Indicates a import-policy node is configured.";
                                description
                                  "Source import route-targets from import-policy";
                              }  // container import-policy
                            }  // container rt
                          }  // container source
    
                          container label {
                            description
                              "Label-related configuration";
                            container mode {
                              description
                                "Select label mode";
                              container per-ce {
                                must
                                  "not(../per-vrf or ../route-policy)";
                                presence
                                  "Indicates a per-ce node is configured.";
                                description
                                  "Set per CE label mode";
                              }  // container per-ce
    
                              container per-vrf {
                                must
                                  "not(../per-ce or ../route-policy)";
                                presence
                                  "Indicates a per-vrf node is configured.";
                                description
                                  "Set per VRF label mode";
                              }  // container per-vrf
    
                              leaf route-policy {
                                type xr:Route-policy-name;
                                must
                                  "not(../per-ce or ../per-vrf)";
                                description
                                  "Use a route policy to select prefixes for label allocation mode";
                              }
                            }  // container mode
                          }  // container label
    
                          container rnh {
                            description
                              "Remote nexthop";
                            container install {
                              description
                                "Install remote nexthop";
                              container extcomm {
                                presence
                                  "Indicates a extcomm node is configured.";
                                description
                                  "Install remote nexthop in extended community and opaque format";
                                container only {
                                  presence
                                    "Indicates a only node is configured.";
                                  description
                                    "Install remote nexthop in extended community format only";
                                }  // container only
                              }  // container extcomm
                            }  // container install
                          }  // container rnh
    
                          leaf table-policy {
                            type xr:Route-policy-name;
                            description
                              "Configure policy for installation of routes to RIB";
                          }
    
                          container segment-routing {
                            description
                              "Segment Routing";
                            container srv6 {
                              presence
                                "Indicates a srv6 node is configured.";
                              description
                                "Specify SRv6 configurations";
                              container alloc {
                                description
                                  "SID Allocation";
                                container mode {
                                  description
                                    "SID Allocation mode";
                                  container per-ce {
                                    must
                                      "not(../per-vrf)";
                                    presence
                                      "Indicates a per-ce node is configured.";
                                    description
                                      "Set per CE label mode";
                                  }  // container per-ce
    
                                  container per-vrf {
                                    must
                                      "not(../per-ce)";
                                    presence
                                      "Indicates a per-vrf node is configured.";
                                    description
                                      "Set per VRF label mode";
                                  }  // container per-vrf
                                }  // container mode
                              }  // container alloc
    
                              leaf locator {
                                type xr:Cisco-ios-xr-string {
                                  length
                                    "1..1024";
                                }
                                description
                                  "Specify locator";
                              }
                            }  // container srv6
                          }  // container segment-routing
                        }  // container all
                      }  // container vrf
    
                      container domain-distinguisher {
                        when
                          "../af-name = 'link-state-link-state'";
                        presence
                          "Indicates a domain-distinguisher node is configured.";
                        description
                          "Globally unique identifier for IGP domain";
                        leaf domain-distinguisher-id {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          mandatory true;
                          description
                            "Globally unique identifier for IGP domain";
                        }
    
                        leaf ip-address {
                          type inet:ipv4-address-no-zone;
                          mandatory true;
                          description
                            "configure this node";
                        }
                      }  // container domain-distinguisher
    
                      container distance {
                        when
                          "../af-name != 'vpn4-unicast' and ../af-name != 'vpnv4-multicast' and ../af-name != 'vpnv6-unicast' and ../af-name != 'vpnv6-multicast' and ../af-name != 'vpnv4-mdt' and ../af-name != 'l2vpn-vpls-vpws' and ../af-name != 'l2vpn-evpn' and ../af-name != 'l2vpn-mspw' and ../af-name != 'ipv4-mvpn' and ../af-name != 'ipv6-mvpn' and ../af-name != 'ipv4-tunnel' and ../af-name != 'ipv4-rt-filter' and ../af-name != 'link-state-link-state' and ../af-name != 'ipv4-flowspec' and ../af-name != 'ipv6-flowspec' and ../af-name != 'vpnv4-flowspec' and ../af-name != 'vpnv6-flowspec' and ../af-name != 'ipv4-sr-policy' and ../af-name != 'ipv6-sr-policy'";
                        description
                          "Define an administrative distance";
                        container bgp {
                          presence
                            "Indicates a bgp node is configured.";
                          description
                            "BGP distance";
                          leaf external-routes {
                            type uint32 {
                              range "1..255";
                            }
                            mandatory true;
                            description
                              "BGP distance";
                          }
    
                          leaf internal-routes {
                            type uint32 {
                              range "1..255";
                            }
                            mandatory true;
                            description
                              "Distance for routes internal to the AS";
                          }
    
                          leaf local-routes {
                            type uint32 {
                              range "1..255";
                            }
                            mandatory true;
                            description
                              "Distance for local routes";
                          }
                        }  // container bgp
                      }  // container distance
    
                      container optimal-route-reflection {
                        when
                          "../af-name != 'vpn4-unicast' and ../af-name != 'vpnv4-multicast' and ../af-name != 'vpnv6-unicast' and ../af-name != 'vpnv6-multicast' and ../af-name != 'vpnv4-mdt' and ../af-name != 'l2vpn-vpls-vpws' and ../af-name != 'l2vpn-evpn' and ../af-name != 'l2vpn-mspw' and ../af-name != 'ipv4-mvpn' and ../af-name != 'ipv6-mvpn' and ../af-name != 'ipv4-tunnel' and ../af-name != 'ipv4-rt-filter' and ../af-name != 'link-state-link-state' and ../af-name != 'ipv4-flowspec' and ../af-name != 'ipv6-flowspec' and ../af-name != 'vpnv4-flowspec' and ../af-name != 'vpnv6-flowspec' and ../af-name != 'ipv4-sr-policy' and ../af-name != 'ipv6-sr-policy'";
                        description
                          "Configure optimal-route-reflection group";
                        list orr-group {
                          key "orr-group-name";
                          description
                            "ORR group name - maximum 32 characters";
                          leaf orr-group-name {
                            type string {
                              length "1..32";
                            }
                            description
                              "ORR group name - maximum 32 characters";
                          }
    
                          leaf primary-address {
                            type inet:ip-address-no-zone;
                            mandatory true;
                            description
                              "IPv4 primary address";
                          }
    
                          leaf secondary-address {
                            type inet:ip-address-no-zone;
                            description
                              "IPv4 secondary address";
                          }
    
                          leaf tertiary-address {
                            type inet:ip-address-no-zone;
                            must
                              "../secondary-address";
                            description
                              "IPv4 tertiary address";
                          }
                        }  // list orr-group
    
                        list apply {
                          key "orr-group-name";
                          description
                            "Apply optimal-route-reflection group";
                          leaf orr-group-name {
                            type xr:Cisco-ios-xr-string {
                              length "1..32";
                            }
                            description
                              "ORR group name - maximum 32 characters";
                          }
                        }  // list apply
    
                        container fallback-default-bestpath {
                          presence
                            "Indicates an ebgp node is configured.";
                          description
                            "In case none of the paths are accessible in
    an ORR table, fallback to default table bestpath
    as ORR bestpath";
                        }  // container fallback-default-bestpath
                      }  // container optimal-route-reflection
    
                      container maximum-paths {
                        when
                          "../af-name != 'vpn4-unicast' and ../af-name != 'vpnv4-multicast' and ../af-name != 'vpnv6-unicast' and ../af-name != 'vpnv6-multicast' and ../af-name != 'vpnv4-mdt' and ../af-name != 'l2vpn-vpls-vpws' and ../af-name != 'l2vpn-evpn' and ../af-name != 'l2vpn-mspw' and ../af-name != 'ipv4-mvpn' and ../af-name != 'ipv6-mvpn' and ../af-name != 'ipv4-tunnel' and ../af-name != 'ipv4-rt-filter' and ../af-name != 'link-state-link-state' and ../af-name != 'ipv4-flowspec' and ../af-name != 'ipv6-flowspec' and ../af-name != 'vpnv4-flowspec' and ../af-name != 'vpnv6-flowspec' and ../af-name != 'ipv4-sr-policy' and ../af-name != 'ipv6-sr-policy'";
                        description
                          "Forward packets over multiple paths";
                        container ebgp {
                          presence
                            "Indicates an ebgp node is configured.";
                          description
                            "eBGP-multipath";
                          leaf multipath {
                            type uint32 {
                              range "2..128";
                            }
                            mandatory true;
                            description
                              "eBGP-multipath";
                          }
    
                          container selective {
                            presence
                              "Indicates a selective node is configured.";
                            description
                              "Allow multipaths only from marked neighbors";
                          }  // container selective
    
                          container order {
                            description
                              "Order candidate multipaths for selection as per configured number";
                            container igp-metric {
                              presence
                                "Indicates an igp-metric node is configured.";
                              description
                                "Order by IGP metric ";
                            }  // container igp-metric
                          }  // container order
                        }  // container ebgp
    
                        container eibgp {
                          presence
                            "Indicates an eibgp node is configured.";
                          description
                            "eiBGP-multipath";
                          leaf multipath {
                            type uint32 {
                              range "2..128";
                            }
                            mandatory true;
                            description
                              "eiBGP-multipath";
                          }
    
                          container selective {
                            presence
                              "Indicates a selective node is configured.";
                            description
                              "Allow multipaths only from marked neighbors";
                          }  // container selective
    
                          container order {
                            description
                              "Order candidate multipaths for selection as per configured number";
                            container igp-metric {
                              presence
                                "Indicates an igp-metric node is configured.";
                              description
                                "Order by IGP metric ";
                            }  // container igp-metric
                          }  // container order
                        }  // container eibgp
    
                        container ibgp {
                          presence
                            "Indicates an ibgp node is configured.";
                          description
                            "iBGP-multipath";
                          leaf multipath {
                            type uint32 {
                              range "2..128";
                            }
                            mandatory true;
                            description
                              "iBGP-multipath";
                          }
    
                          container selective {
                            presence
                              "Indicates a selective node is configured.";
                            description
                              "Allow multipaths only from marked neighbors";
                          }  // container selective
    
                          container order {
                            description
                              "Order candidate multipaths for selection as per configured number";
                            container igp-metric {
                              presence
                                "Indicates an igp-metric node is configured.";
                              description
                                "Order by IGP metric ";
                            }  // container igp-metric
                          }  // container order
    
                          container unequal-cost {
                            presence
                              "Indicates an unequal-cost node is configured.";
                            description
                              "Allow multipaths to have different BGP nexthop IGP metrics ";
                          }  // container unequal-cost
                        }  // container ibgp
                      }  // container maximum-paths
    
                      container additional-paths {
                        when
                          "../af-name != 'ipv4-multicast' and ../af-name != 'ipv6-multicast' and ../af-name != 'ipv4-mdt' and ../af-name != 'l2vpn-vpls-vpws' and ../af-name != 'ipv4-tunnel'";
                        description
                          "Additional paths configuration";
                        container send {
                          presence
                            "Indicates a send node is configured.";
                          description
                            "Additional paths Send capability";
                        }  // container send
    
                        container receive {
                          presence
                            "Indicates a receive node is configured.";
                          description
                            "Additional paths Receive capability";
                        }  // container receive
    
                        container selection {
                          description
                            "Additional paths selection";
                          leaf route-policy {
                            type xr:Route-policy-name;
                            description
                              "Route-policy for additional paths selection";
                          }
                        }  // container selection
                      }  // container additional-paths
    
                      container permanent-network {
                        description
                          "Permanent network configuration";
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "Route policy to read the prefixes from";
                        }
                      }  // container permanent-network
    
                      container advertise {
                        description
                          "Advertise BGP path";
                        container best-external {
                          presence
                            "Indicates a best-external node is configured.";
                          description
                            "Advertise best-external path";
                          container labeled-unicast {
                            must
                              "not(../disable)";
                            presence
                              "Indicates a labeled-unicast node is configured.";
                            description
                              "Limit best-external to Labeled-Unicast address family";
                          }  // container labeled-unicast
    
                          container disable {
                            must
                              "not(../labeled-unicast)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Do not advertise best-external path";
                          }  // container disable
                        }  // container best-external
    
                        container local-labeled-route {
                          when
                            "../../af-name = 'ipv4-unicast' or ../../af-name = 'ipv6-unicast'";
                          description
                            "Advertisement of routes with local-label";
                          container safi-unicast {
                            description
                              "Advertisement of routes with local-label via Unicast SAFI";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Do not advertise routes with local-label via Unicast SAFI";
                            }  // container disable
                          }  // container safi-unicast
                        }  // container local-labeled-route
                      }  // container advertise
    
                      container nexthop {
                        description "Nexthop";
                        container resolution {
                          description
                            "Nexthop resolution";
                          container prefix-length {
                            description
                              "Nexthop resolution prefix-length";
                            leaf minimum {
                              type union {
                                type uint32 {
                                  range "0..32";
                                }
                                type uint32 {
                                  range "0..128";
                                }
                              }
                              description
                                "Set minimum prefix-length for nexthop resolution";
                            }
    
                            leaf ipv6 {
                              type uint32 {
                                range "0..128";
                              }
                              description
                                "IPv6 Prefix-length value";
                            }
                          }  // container prefix-length
                        }  // container resolution
    
                        container trigger-delay {
                          description
                            "Processing trigger delay";
                          leaf critical {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "For critical notification";
                          }
    
                          leaf non-critical {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "For non-critical notification";
                          }
                        }  // container trigger-delay
    
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "Policy to filter out nexthop notification";
                        }
                      }  // container nexthop
    
                      container networks {
                        description
                          "Specify a network to announce via BGP";
                        list network {
                          key "address masklength";
                          description
                            "IPv6 network and mask or masklength";
                          leaf address {
                            type inet:ip-address-no-zone;
                            description
                              "IPv6 network and mask or masklength";
                          }
    
                          leaf masklength {
                            type uint16 {
                              range "0..128";
                            }
                            description
                              "Network in prefix/length format (prefix part)";
                          }
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            description
                              "Route-policy to modify the attributes";
                          }
    
                          container backdoor {
                            presence
                              "Indicates a backdoor node is configured.";
                            description
                              "Specify a BGP backdoor route";
                          }  // container backdoor
    
                          container multipath {
                            presence
                              "Indicates a backdoor node is configured.";
                            description
                              "Enable installation of multiple paths from RIB";
                          }  // container multipath
                        }  // list network
                      }  // container networks
    
                      container aggregate-addresses {
                        description
                          "Configure BGP aggregate entries";
                        list aggregate-address {
                          key "address masklength";
                          description
                            "IPv6 Aggregate address and mask or masklength";
                          leaf address {
                            type inet:ip-address-no-zone;
                            description
                              "IPv6 Aggregate address and mask or masklength";
                          }
    
                          leaf masklength {
                            type uint16 {
                              range "0..128";
                            }
                            description
                              "Network in prefix/length format (prefix part)";
                          }
    
                          container as-set {
                            presence
                              "Indicates a as-set node is configured.";
                            description
                              "Generate AS set path information";
                          }  // container as-set
    
                          container as-confed-set {
                            presence
                              "Indicates a as-confed-set node is configured.";
                            description
                              "Generate AS confed set path information";
                          }  // container as-confed-set
    
                          container summary-only {
                            presence
                              "Indicates a summary-only node is configured.";
                            description
                              "Filter more specific routes from updates";
                          }  // container summary-only
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            description
                              "Policy to condition advertisement, suppression, and attributes";
                          }
                        }  // list aggregate-address
                      }  // container aggregate-addresses
    
                      container redistribute {
                        when
                          "../af-name = 'ipv4-unicast' or ../af-name = 'ipv4-multicast' or ../af-name = 'ipv6-unicast' or ../af-name = 'ipv6-multicast'";
                        description
                          "Redistribute information from another routing protocol";
                        list ospf {
                          key "router-tag";
                          description
                            "Open Shortest Path First (OSPF or OSPFv3)";
                          leaf router-tag {
                            type xr:Cisco-ios-xr-string {
                              length "1..1024";
                            }
                            description
                              "Open Shortest Path First (OSPF)";
                          }
    
                          container match {
                            presence
                              "Indicates a match node is configured.";
                            description
                              "Redistribution of OSPF routes";
                            container internal {
                              presence
                                "Indicates a internal node is configured.";
                              description
                                "Redistribute OSPF internal routes";
                              container external {
                                presence
                                  "Indicates a external node is configured.";
                                description
                                  "Redistribute OSPF external routes";
                                container one {
                                  presence
                                    "Indicates a one node is configured.";
                                  description
                                    "Redistribute external type 1 routes";
                                  container nssa-external {
                                    presence
                                      "Indicates a nssa-external node is configured.";
                                    description
                                      "Redistribute OSPF NSSA external routes";
                                    container one {
                                      presence
                                        "Indicates a one node is configured.";
                                      description
                                        "Redistribute NSSA external type 1 routes";
                                    }  // container one
    
                                    container two {
                                      presence
                                        "Indicates a two node is configured.";
                                      description
                                        "Redistribute NSSA external type 2 routes";
                                    }  // container two
                                  }  // container nssa-external
                                }  // container one
    
                                container two {
                                  presence
                                    "Indicates a two node is configured.";
                                  description
                                    "Redistribute external type 2 routes";
                                  container nssa-external {
                                    presence
                                      "Indicates a nssa-external node is configured.";
                                    description
                                      "Redistribute OSPF NSSA external routes";
                                    container one {
                                      presence
                                        "Indicates a one node is configured.";
                                      description
                                        "Redistribute NSSA external type 1 routes";
                                    }  // container one
    
                                    container two {
                                      presence
                                        "Indicates a two node is configured.";
                                      description
                                        "Redistribute NSSA external type 2 routes";
                                    }  // container two
                                  }  // container nssa-external
                                }  // container two
    
                                container nssa-external {
                                  presence
                                    "Indicates a nssa-external node is configured.";
                                  description
                                    "Redistribute OSPF NSSA external routes";
                                  container one {
                                    presence
                                      "Indicates a one node is configured.";
                                    description
                                      "Redistribute NSSA external type 1 routes";
                                  }  // container one
    
                                  container two {
                                    presence
                                      "Indicates a two node is configured.";
                                    description
                                      "Redistribute NSSA external type 2 routes";
                                  }  // container two
                                }  // container nssa-external
                              }  // container external
    
                              container nssa-external {
                                presence
                                  "Indicates a nssa-external node is configured.";
                                description
                                  "Redistribute OSPF NSSA external routes";
                                container one {
                                  presence
                                    "Indicates a one node is configured.";
                                  description
                                    "Redistribute NSSA external type 1 routes";
                                }  // container one
    
                                container two {
                                  presence
                                    "Indicates a two node is configured.";
                                  description
                                    "Redistribute NSSA external type 2 routes";
                                }  // container two
                              }  // container nssa-external
                            }  // container internal
    
                            container external {
                              presence
                                "Indicates a external node is configured.";
                              description
                                "Redistribute OSPF external routes";
                              container one {
                                presence
                                  "Indicates a one node is configured.";
                                description
                                  "Redistribute external type 1 routes";
                                container nssa-external {
                                  presence
                                    "Indicates a nssa-external node is configured.";
                                  description
                                    "Redistribute OSPF NSSA external routes";
                                  container one {
                                    presence
                                      "Indicates a one node is configured.";
                                    description
                                      "Redistribute NSSA external type 1 routes";
                                  }  // container one
    
                                  container two {
                                    presence
                                      "Indicates a two node is configured.";
                                    description
                                      "Redistribute NSSA external type 2 routes";
                                  }  // container two
                                }  // container nssa-external
                              }  // container one
    
                              container two {
                                presence
                                  "Indicates a two node is configured.";
                                description
                                  "Redistribute external type 2 routes";
                                container nssa-external {
                                  presence
                                    "Indicates a nssa-external node is configured.";
                                  description
                                    "Redistribute OSPF NSSA external routes";
                                  container one {
                                    presence
                                      "Indicates a one node is configured.";
                                    description
                                      "Redistribute NSSA external type 1 routes";
                                  }  // container one
    
                                  container two {
                                    presence
                                      "Indicates a two node is configured.";
                                    description
                                      "Redistribute NSSA external type 2 routes";
                                  }  // container two
                                }  // container nssa-external
                              }  // container two
    
                              container nssa-external {
                                presence
                                  "Indicates a nssa-external node is configured.";
                                description
                                  "Redistribute OSPF NSSA external routes";
                                container one {
                                  presence
                                    "Indicates a one node is configured.";
                                  description
                                    "Redistribute NSSA external type 1 routes";
                                }  // container one
    
                                container two {
                                  presence
                                    "Indicates a two node is configured.";
                                  description
                                    "Redistribute NSSA external type 2 routes";
                                }  // container two
                              }  // container nssa-external
                            }  // container external
    
                            container nssa-external {
                              presence
                                "Indicates a nssa-external node is configured.";
                              description
                                "Redistribute OSPF NSSA external routes";
                              container one {
                                presence
                                  "Indicates a one node is configured.";
                                description
                                  "Redistribute NSSA external type 1 routes";
                              }  // container one
    
                              container two {
                                presence
                                  "Indicates a two node is configured.";
                                description
                                  "Redistribute NSSA external type 2 routes";
                              }  // container two
                            }  // container nssa-external
                          }  // container match
    
                          container multipath {
                            presence
                              "Indicates a multipath node is configured.";
                            description
                              "Enable installation of multiple paths from RIB";
                          }  // container multipath
    
                          leaf metric {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "Metric for redistributed routes";
                          }
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            description
                              "Route policy reference";
                          }
                        }  // list ospf
    
                        list eigrp {
                          key "instance-name";
                          description
                            "Enhanced Interior Gateway Routing Protocol (EIGRP)";
                          leaf instance-name {
                            type xr:Cisco-ios-xr-string {
                              length "1..1024";
                            }
                            description
                              "Enhanced Interior Gateway Routing Protocol (EIGRP)";
                          }
    
                          container match {
                            description
                              "EIGRP route type for redistribution";
                            container internal {
                              presence
                                "Indicates a internal node is configured.";
                              description
                                "Redistribute EIGRP internal routes";
                              container external {
                                presence
                                  "Indicates a external node is configured.";
                                description
                                  "Redistribute EIGRP external routes";
                              }  // container external
                            }  // container internal
    
                            container external {
                              presence
                                "Indicates a external node is configured.";
                              description
                                "Redistribute EIGRP external routes";
                            }  // container external
                          }  // container match
    
                          container multipath {
                            presence
                              "Indicates a multipath node is configured.";
                            description
                              "Enable installation of multiple paths from RIB";
                          }  // container multipath
    
                          leaf metric {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "Metric for redistributed routes";
                          }
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            description
                              "Route policy reference";
                          }
                        }  // list eigrp
    
                        list isis {
                          key "instance-name";
                          description
                            "ISO IS-IS";
                          leaf instance-name {
                            type xr:Cisco-ios-xr-string {
                              length "1..1024";
                            }
                            description
                              "ISO IS-IS";
                          }
    
                          container level {
                            description
                              "Redistribute routes from the specified ISIS levels";
                            container one {
                              presence
                                "Indicates a one node is configured.";
                              description
                                "Redistribute ISIS level 1 routes";
                              container two {
                                presence
                                  "Indicates a two node is configured.";
                                description
                                  "Redistribute ISIS level 2 ISIS routes";
                                container one-inter-area {
                                  presence
                                    "Indicates a one-inter-area node is configured.";
                                  description
                                    "Redistribute ISIS level 1 inter-area routes";
                                }  // container one-inter-area
                              }  // container two
    
                              container one-inter-area {
                                presence
                                  "Indicates a one-inter-area node is configured.";
                                description
                                  "Redistribute ISIS level 1 inter-area routes";
                              }  // container one-inter-area
                            }  // container one
    
                            container two {
                              presence
                                "Indicates a two node is configured.";
                              description
                                "Redistribute ISIS level 2 ISIS routes";
                              container one-inter-area {
                                presence
                                  "Indicates a one-inter-area node is configured.";
                                description
                                  "Redistribute ISIS level 1 inter-area routes";
                              }  // container one-inter-area
                            }  // container two
    
                            container one-inter-area {
                              presence
                                "Indicates a one-inter-area node is configured.";
                              description
                                "Redistribute ISIS level 1 inter-area routes";
                            }  // container one-inter-area
                          }  // container level
    
                          leaf metric {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "Metric for redistributed routes";
                          }
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            description
                              "Route policy reference";
                          }
    
                          container multipath {
                            presence
                              "Indicates a multipath node is configured.";
                            description
                              "Enable installation of multiple paths from RIB";
                          }  // container multipath
                        }  // list isis
    
                        list application {
                          key "application-name";
                          description
                            "OnePK application routes";
                          leaf application-name {
                            type string {
                              length "1..1024";
                            }
                            description
                              "OnePK application name";
                          }
    
                          leaf metric {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "Metric for redistributed routes";
                          }
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            description
                              "Route policy reference";
                          }
    
                          container multipath {
                            presence
                              "Indicates a multipath node is configured.";
                            description
                              "Enable installation of multiple paths from RIB";
                          }  // container multipath
                        }  // list application
    
                        container connected {
                          presence
                            "Indicates a connected node is configured.";
                          description
                            "Connected routes";
                          leaf metric {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "Metric for redistributed routes";
                          }
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            description
                              "Route policy reference";
                          }
    
                          container multipath {
                            presence
                              "Indicates a multipath node is configured.";
                            description
                              "Enable installation of multiple paths from RIB";
                          }  // container multipath
                        }  // container connected
    
                        container lisp {
                          presence
                            "Indicates a lisp node is configured.";
                          description
                            "Locator/ID Separation Protocol (LISP)";
                          leaf metric {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "Metric for redistributed routes";
                          }
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            description
                              "Route policy reference";
                          }
    
                          container multipath {
                            presence
                              "Indicates a multipath node is configured.";
                            description
                              "Enable installation of multiple paths from RIB";
                          }  // container multipath
                        }  // container lisp
    
                        container mobile {
                          presence
                            "Indicates a mobile node is configured.";
                          description
                            "Mobile routes";
                          leaf metric {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "Metric for redistributed routes";
                          }
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            description
                              "Route policy reference";
                          }
    
                          container multipath {
                            presence
                              "Indicates a multipath node is configured.";
                            description
                              "Enable installation of multiple paths from RIB";
                          }  // container multipath
                        }  // container mobile
    
                        container rip {
                          when
                            "../../af-name = 'ipv4-unicast' or ../../af-name = 'ipv4-multicast'";
                          presence
                            "Indicates a rip node is configured.";
                          description
                            "Routing Information Protocol (RIP)";
                          leaf metric {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "Metric for redistributed routes";
                          }
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            description
                              "Route policy reference";
                          }
    
                          container multipath {
                            presence
                              "Indicates a multipath node is configured.";
                            description
                              "Enable installation of multiple paths from RIB";
                          }  // container multipath
                        }  // container rip
    
                        container static {
                          presence
                            "Indicates a static node is configured.";
                          description
                            "Static routes";
                          leaf metric {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "Metric for redistributed routes";
                          }
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            description
                              "Route policy reference";
                          }
    
                          container multipath {
                            presence
                              "Indicates a multipath node is configured.";
                            description
                              "Enable installation of multiple paths from RIB";
                          }  // container multipath
                        }  // container static
    
                        container subscriber {
                          presence
                            "Indicates a lisp node is configured.";
                          description
                            "subscriber routes";
                          leaf metric {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "Metric for redistributed routes";
                          }
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            description
                              "Route policy reference";
                          }
    
                          container multipath {
                            presence
                              "Indicates a multipath node is configured.";
                            description
                              "Enable installation of multiple paths from RIB";
                          }  // container multipath
                        }  // container subscriber
                      }  // container redistribute
    
                      leaf table-policy {
                        type xr:Route-policy-name;
                        description
                          "Configure policy for installation of routes to RIB";
                      }
    
                      container retain {
                        description
                          "Accept/Retain specified bgp parameters";
                        leaf local-label {
                          when
                            "../../af-name = 'ipv4-unicast' or ../../af-name = 'vpnv4-unicast' or ../../af-name = 'vpnv4-multicast' or ../../af-name = 'vpnv6-unicast' or ../../af-name = 'vpnv6-multicast' or ../../af-name = 'ipv6-unicast'";
                          type uint32 {
                            range "3..60";
                          }
                          description
                            "Delay the release of the local label as configured";
                        }
    
                        container route-target {
                          when
                            "../../af-name = 'vpnv4-unicast' or ../../af-name = 'vpnv4-multicast' or ../../af-name = 'vpnv4-flowspec' or ../../af-name = 'vpnv6-unicast' or ../../af-name = 'vpnv6-multicast' or ../../af-name = 'vpnv6-flowspec' or ../../af-name = 'l2vpn-evpn' or ../../af-name = 'l2vpn-vpls-vpws' or ../../af-name = 'ipv4-mvpn' or ../../af-name = 'ipv6-mvpn'";
                          description
                            "Accept received updates with the specified route targets";
                          container all {
                            must
                              "not(../route-policy)";
                            presence
                              "Indicates a all node is configured.";
                            description
                              "Accept received updates containing at least one route target";
                          }  // container all
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            must "not(../all)";
                            description
                              "Accept received updates accepted by the specified policy";
                          }
                        }  // container route-target
                      }  // container retain
    
                      container allocate-label {
                        description
                          "Allocate label for selected prefixes";
                        container all {
                          presence
                            "Indicates a all node is configured.";
                          description
                            "Allocate labels for all prefixes";
                          container unlabeled-path {
                            presence
                              "Indicates a unlabeled-path node is configured.";
                            description
                              "Allocate label for unlabeled paths too";
                          }  // container unlabeled-path
                        }  // container all
    
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "Use a route policy to select prefixes for label allocation";
                        }
                      }  // container allocate-label
    
                      container label {
                        description
                          "Label-related configuration";
                        container mode {
                          description
                            "Select label mode";
                          container per-ce {
                            when
                              "../../../af-name = 'ipv4-unicast' or ../../../af-name = 'ipv6-unicast'";
                            must
                              "not(../per-vrf or ../route-policy)";
                            presence
                              "Indicates a per-ce node is configured.";
                            description
                              "Set per CE label mode";
                          }  // container per-ce
    
                          container per-vrf {
                            when
                              "../../../af-name = 'ipv4-unicast' or ../../../af-name = 'ipv6-unicast'";
                            must
                              "not(../per-ce or ../route-policy)";
                            presence
                              "Indicates a per-vrf node is configured.";
                            description
                              "Set per VRF label mode";
                          }  // container per-vrf
    
                          leaf route-policy {
                            when
                              "../../../af-name = 'ipv4-unicast' or ../../../af-name = 'ipv6-unicast'";
                            type xr:Route-policy-name;
                            must
                              "not(../per-ce or ../per-vrf)";
                            description
                              "Use a route policy to select prefixes for label allocation mode";
                          }
    
                          container per-nexthop-received-label {
                            when
                              "../../../af-name = 'vpnv4-unicast' or ../../../af-name = 'vpnv6-unicast'";
                            presence
                              "Indicates a per-nexthop-received-label node is configured.";
                            description
                              "Set label mode per nexthop and received label";
                          }  // container per-nexthop-received-label
                        }  // container mode
                      }  // container label
    
                      container rnh {
                        description
                          "Remote nexthop";
                        container install {
                          description
                            "Install remote nexthop";
                          container extcomm {
                            presence
                              "Indicates a extcomm node is configured.";
                            description
                              "Install remote nexthop in extended community and opaque format";
                            container only {
                              presence
                                "Indicates a only node is configured.";
                              description
                                "Install remote nexthop in extended community format only";
                            }  // container only
                          }  // container extcomm
                        }  // container install
                      }  // container rnh
    
                      container bgp {
                        description
                          "BGP Commands";
                        container client-to-client {
                          description
                            "Configure client to client route reflection";
                          container reflection {
                            description
                              "Reflection";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable";
                            }  // container disable
    
                            container cluster-id {
                              description
                                "ID of Cluster for which reflection is to be disabled";
                              container cluster-id-32bits {
                                description
                                  "Route-Reflector Cluster-id as 32 bit quantity";
                                list cluster-id-32bit {
                                  key "cluster-id";
                                  description
                                    "Route-Reflector Cluster-id as 32 bit quantity";
                                  leaf cluster-id {
                                    type uint32 {
                                      range
                                        "1..4294967295";
                                    }
                                    description
                                      "Route-Reflector Cluster-id as 32 bit quantity";
                                  }
    
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable";
                                  }  // container disable
                                }  // list cluster-id-32bit
                              }  // container cluster-id-32bits
    
                              container cluster-id-ip-addresses {
                                description
                                  "Route-Reflector Cluster-id in IP address format";
                                list cluster-id-ip-address {
                                  key "ip-address";
                                  description
                                    "Route-Reflector Cluster-id in IP address format";
                                  leaf ip-address {
                                    type inet:ipv4-address-no-zone;
                                    description
                                      "Route-Reflector Cluster-id in IP address format";
                                  }
    
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable";
                                  }  // container disable
                                }  // list cluster-id-ip-address
                              }  // container cluster-id-ip-addresses
                            }  // container cluster-id
                          }  // container reflection
                        }  // container client-to-client
    
                        container dampening {
                          presence
                            "Indicates a dampening node is configured.";
                          description
                            "Enable route-flap dampening";
                          leaf half-life-time {
                            type uint32 {
                              range "1..45";
                            }
                            must
                              "not(../route-policy)";
                            description
                              "Half-life time for the penalty";
                          }
    
                          leaf start-reusing-route {
                            type uint32 {
                              range "1..20000";
                            }
                            must
                              "../half-life-time and ../start-suppressing-route";
                            description
                              "Value to start reusing a route";
                          }
    
                          leaf start-suppressing-route {
                            type uint32 {
                              range "1..20000";
                            }
                            must
                              "../start-reusing-route and ../maximum-duration";
                            description
                              "Value to start suppressing a route";
                          }
    
                          leaf maximum-duration {
                            type uint32 {
                              range "1..255";
                            }
                            must
                              "../start-suppressing-route";
                            description
                              "Maximum duration to suppress a stable route";
                          }
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            must
                              "not(../half-life-time)";
                            description
                              "Route policy to specify criteria for dampening";
                          }
                        }  // container dampening
    
                        container attribute-download {
                          presence
                            "Indicates a attribute-download node is configured.";
                          description
                            "Configure attribute download for this address-family";
                        }  // container attribute-download
    
                        container implicit-import {
                          presence
                            "Indicates a implicit-import node is configured.";
                          description
                            "Configure implicit import for this address-family";
                        }  // container implicit-import
    
                        container import-delay {
                          presence
                            "Indicates a import-delay node is configured.";
                          description
                            "Specify delay for batching import processing";
                          leaf delay-seconds {
                            type uint32 {
                              range "0..10";
                            }
                            mandatory true;
                            description
                              "Specify delay for batching import processing";
                          }
    
                          leaf delay-milliseconds {
                            type uint32 {
                              range "0..999";
                            }
                            mandatory true;
                            description
                              "Delay, milliseconds part";
                          }
                        }  // container import-delay
    
                        container label-delay {
                          presence
                            "Indicates a label-delay node is configured.";
                          description
                            "Specify delay for batching label processing";
                          leaf delay-seconds {
                            type uint32 {
                              range "0..10";
                            }
                            mandatory true;
                            description
                              "Specify delay for batching label processing";
                          }
    
                          leaf delay-milliseconds {
                            type uint32 {
                              range "0..999";
                            }
                            mandatory true;
                            description
                              "Delay, milliseconds part";
                          }
                        }  // container label-delay
    
                        leaf scan-time {
                          type uint32 {
                            range "5..3600";
                          }
                          description
                            "Configure background scanner interval for this address-family";
                        }
    
                        container origin-as {
                          description
                            "BGP origin-AS knobs";
                          container validation {
                            description
                              "BGP origin-AS validation knobs";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable RPKI origin-AS validation";
                            }  // container disable
    
                            container enable {
                              presence
                                "Indicates a enable node is configured.";
                              description
                                "Enable RPKI origin-AS validation";
                            }  // container enable
    
                            container signal {
                              description
                                "Signal origin-AS validity towards peers";
                              container ibgp {
                                presence
                                  "Indicates a ibgp node is configured.";
                                description
                                  "Signal origin-AS validity towards iBGP peers";
                              }  // container ibgp
                            }  // container signal
                          }  // container validation
                        }  // container origin-as
    
                        container bestpath {
                          description
                            "Change default route selection criteria";
                          container origin-as {
                            description
                              "BGP origin-AS knobs";
                            container use {
                              description
                                "BGP origin-AS knobs";
                              container validity {
                                presence
                                  "Indicates a validity node is configured.";
                                description
                                  "BGP bestpath selection will use origin-AS validity";
                              }  // container validity
                            }  // container use
    
                            container allow {
                              description
                                "BGP origin-AS knobs";
                              container invalid {
                                presence
                                  "Indicates a invalid node is configured.";
                                description
                                  "BGP bestpath selection will allow 'invalid' origin-AS";
                              }  // container invalid
                            }  // container allow
                          }  // container origin-as
                        }  // container bestpath
                      }  // container bgp
    
                      container event {
                        description
                          "Policy for per-prefix tracing";
                        container prefix {
                          description
                            "Policy for per-prefix tracing";
                          leaf route-policy {
                            type xr:Route-policy-name;
                            description
                              "Policy for per-prefix tracing";
                          }
                        }  // container prefix
                      }  // container event
    
                      container dynamic-med {
                        description
                          "Dynamic MED Interval";
                        leaf interval {
                          type uint32 {
                            range "0..10";
                          }
                          description
                            "Update generation delay (in minutes) after a MED change";
                        }
                      }  // container dynamic-med
    
                      container weight {
                        description
                          "Define or modify weight";
                        container reset-on-import {
                          presence
                            "Indicates a reset-on-import node is configured.";
                          description
                            "Reset weight of paths on import";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Do not reset weight of paths on import";
                          }  // container disable
                        }  // container reset-on-import
                      }  // container weight
    
                      container update {
                        description
                          "BGP Update generation configuration";
                        container limit {
                          description
                            "Upper bound on transient memory usage for update generation";
                          leaf address-family {
                            type uint32 {
                              range "4..2048";
                            }
                            description
                              "Update limit for address-family";
                          }
    
                          container sub-group {
                            description
                              "Update limit for sub-groups";
                            leaf ebgp {
                              type uint32 {
                                range "1..512";
                              }
                              description
                                "Update limit for eBGP sub-groups";
                            }
    
                            leaf ibgp {
                              type uint32 {
                                range "1..512";
                              }
                              description
                                "Update limit for iBGP sub-groups";
                            }
                          }  // container sub-group
                        }  // container limit
    
                        container wait-install {
                          presence
                            "Indicates a wait-install node is configured.";
                          description
                            "Wait for route install";
                        }  // container wait-install
                      }  // container update
    
                      container as-path-loopcheck {
                        description
                          "Configure AS Path loop checking";
                        container out {
                          description
                            "For outbound updates";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable";
                          }  // container disable
                        }  // container out
                      }  // container as-path-loopcheck
    
                      container inter-as {
                        description "Inter AS";
                        container install {
                          presence
                            "Indicates a install node is configured.";
                          description
                            "Install remote mvpn routes in default vrf";
                        }  // container install
                      }  // container inter-as
    
                      container global-table-multicast {
                        presence
                          "Indicates a global-table-multicast node is configured.";
                        description
                          "Enable global table multicast";
                      }  // container global-table-multicast
    
                      container segmented-multicast {
                        presence
                          "Indicates a segmented-multicast node is configured.";
                        description
                          "Enable segmented multicast";
                      }  // container segmented-multicast
    
                      container label-security {
                        description
                          "BGP Label Security";
                        container asbr {
                          description
                            "Label Security for ASBR peers";
                          container rpf {
                            presence
                              "Indicates a rpf node is configured.";
                            description
                              "RPF Label Security for Option-B";
                          }  // container rpf
                        }  // container asbr
                      }  // container label-security
    
                      container default-martian-check {
                        description
                          "Martian check default";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description "Disable";
                        }  // container disable
                      }  // container default-martian-check
    
                      container peer-set-ids {
                        when
                          "../af-name = 'ipv4-unicast' or ../af-name = 'ipv6-unicast'";
                        description
                          "configuration for a single EPE Peer Set";
                        list peer-set-id {
                          key "peer-set-id";
                          description
                            "configuration for a single EPE Peer Set";
                          leaf peer-set-id {
                            type uint32 {
                              range "1..255";
                            }
                            description
                              "configuration for a single EPE Peer Set";
                          }
    
                          container peer-set-sid {
                            description
                              "configure a SID for peer-set EPE object";
                            leaf index {
                              type uint32 {
                                range
                                  "0..1033575";
                              }
                              description
                                "Segment Index value to assign. This will be off SRLB range";
                            }
                          }  // container peer-set-sid
                        }  // list peer-set-id
                      }  // container peer-set-ids
    
                      container segment-routing {
                        when
                          "../af-name = 'ipv4-unicast' or ../af-name = 'ipv6-unicast'";
                        description
                          "Segment Routing";
                        container prefix-sid-map {
                          when
                            "../../af-name = 'ipv4-unicast'";
                          presence
                            "Indicates a prefix-sid-map node is configured.";
                          description
                            "Retrieve prefix id mapping from SRMS";
                        }  // container prefix-sid-map
    
                        container srv6 {
                          presence
                            "Indicates a srv6 node is configured.";
                          description
                            "Specify SRv6 configurations";
                          container alloc {
                            description
                              "SID Allocation";
                            container mode {
                              description
                                "SID Allocation mode";
                              container per-ce {
                                must
                                  "not(../per-vrf)";
                                presence
                                  "Indicates a per-ce node is configured.";
                                description
                                  "Set per CE label mode";
                              }  // container per-ce
    
                              container per-vrf {
                                must
                                  "not(../per-ce)";
                                presence
                                  "Indicates a per-vrf node is configured.";
                                description
                                  "Set per VRF label mode";
                              }  // container per-vrf
                            }  // container mode
                          }  // container alloc
    
                          leaf locator {
                            type xr:Cisco-ios-xr-string {
                              length "1..1024";
                            }
                            description
                              "Specify locator";
                          }
                        }  // container srv6
                      }  // container segment-routing
    
                      container option-b-asbr-only {
                        when
                          "../af-name = 'l2vpn-evpn'";
                        presence
                          "Indicates a prefix-sid-map node is configured.";
                        description
                          "Enable the ASBR router for option-B label exchange.This option makes the router an Option B ASBR for EVPN.Its assumed no DCI configs are present";
                      }  // container option-b-asbr-only
                    }  // list address-family
                  }  // container address-families
    
                  container neighbors {
                    description
                      "Specify a neighbor router";
                    list neighbor {
                      key "neighbor-address";
                      description
                        "Neighbor address";
                      leaf neighbor-address {
                        type inet:ip-address-no-zone;
                        description
                          "Neighbor address";
                      }
    
                      container address-families {
                        description
                          "Enter Address Family command mode";
                        list address-family {
                          key "af-name";
                          description
                            "Enter Address Family command mode";
                          leaf af-name {
                            type Bgp-address-family;
                            description
                              "Enter Address Family command mode";
                          }
    
                          container use {
                            description
                              "Inherit configuration for this address-family from a group";
                            leaf af-group {
                              type string {
                                length "1..1024";
                              }
                              description
                                "Inherit configuration for this address-family from an af-group";
                            }
                          }  // container use
    
                          container capability {
                            description
                              "Advertise capability to the peer";
                            container orf {
                              description
                                "Advertise ORF capability to the peer";
                              container prefix {
                                description
                                  "Advertise address prefix ORF capability to this neighbor";
                                container receive {
                                  must
                                    "not(../send or ../both or ../none)";
                                  presence
                                    "Indicates a receive node is configured.";
                                  description
                                    "Capability to RECEIVE the ORF from this neighbor";
                                }  // container receive
    
                                container send {
                                  must
                                    "not(../receive or ../both or ../none)";
                                  presence
                                    "Indicates a send node is configured.";
                                  description
                                    "Capability to SEND the ORF to this neighbor";
                                }  // container send
    
                                container both {
                                  must
                                    "not(../receive or ../send or ../none)";
                                  presence
                                    "Indicates a both node is configured.";
                                  description
                                    "Capability to RECEIVE and SEND the ORF from/to this neighbor";
                                }  // container both
    
                                container none {
                                  must
                                    "not(../receive or ../send or ../both)";
                                  presence
                                    "Indicates a none node is configured.";
                                  description
                                    "No capability to RECEIVE or SEND the ORF from/to this neighbor";
                                }  // container none
                              }  // container prefix
                            }  // container orf
                          }  // container capability
    
                          container default-originate {
                            presence
                              "Indicates a default-originate node is configured.";
                            description
                              "Originate default route to this neighbor";
                            leaf route-policy {
                              type xr:Route-policy-name;
                              description
                                "Route policy to specify criteria to originate default";
                            }
    
                            container inheritance-disable {
                              must
                                "not(../route-policy)";
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent default-originate being inherited from a parent group";
                            }  // container inheritance-disable
                          }  // container default-originate
    
                          container maximum-prefix {
                            presence
                              "Indicates a maximum-prefix node is configured.";
                            description
                              "Maximum number of prefixes to accept from this peer";
                            leaf prefix-limit {
                              type uint32 {
                                range
                                  "1..4294967295";
                              }
                              mandatory true;
                              description
                                "Maximum number of prefixes to accept from this peer";
                            }
    
                            leaf threshold {
                              type uint32 {
                                range "1..100";
                              }
                              mandatory true;
                              description
                                "Threshold value (%) at which to generate a warning msg";
                            }
    
                            container warning-only {
                              presence
                                "Indicates a warning-only node is configured.";
                              description
                                "Only give warning message when limit is exceeded";
                            }  // container warning-only
    
                            leaf restart {
                              type uint32 {
                                range "1..65535";
                              }
                              description
                                "Restart time interval";
                            }
    
                            container discard-extra-paths {
                              presence
                                "Indicates a discard-extra-paths node is configured.";
                              description
                                "Discard extra paths when limit is exceeded";
                            }  // container discard-extra-paths
                          }  // container maximum-prefix
    
                          leaf optimal-route-reflection {
                            type string {
                              length "1..32";
                            }
                            description
                              "Configure optiomal-route-reflection for this neighbor";
                          }
    
                          container next-hop-self {
                            presence
                              "Indicates a next-hop-self node is configured.";
                            description
                              "Disable the next hop calculation for this neighbor";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent next-hop-self from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container next-hop-self
    
                          container next-hop-unchanged {
                            presence
                              "Indicates a next-hop-unchanged node is configured.";
                            description
                              "Do not overwrite next hop before advertising to eBGP peers";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent next-hop-unchanged from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container next-hop-unchanged
    
                          container next-hop-unchanged-multipath {
                            presence
                              "Indicates a next-hop-unchanged-multipath node is configured.";
                            description
                              "Do not overwrite nexthop before advertising multipaths";
                          }  // container next-hop-unchanged-multipath
    
                          container slow-peer {
                            description
                              "configuration commands for slow-peer";
                            container detection {
                              description
                                "Enable or disable slow peer detection.";
                              container enable {
                                must
                                  "not(../disable) and
    (../split-update-group/static or
     ../split-update-group/dynamic)";
                                presence
                                  "Indicates a enable node is configured.";
                                description
                                  "Enable slow peer detection";
                              }  // container enable
    
                              container disable {
                                must
                                  "not(../enable) and
    (../split-update-group/static or
     ../split-update-group/dynamic)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable slow peer detection";
                              }  // container disable
    
                              container split-update-group {
                                description
                                  "Options to split update group";
                                container static {
                                  must
                                    "not(../dynamic) and (../../enable or ../../disable)";
                                  presence
                                    "Indicates a static node is configured.";
                                  description
                                    "Manually move this peer to slow update group";
                                }  // container static
    
                                container dynamic {
                                  must
                                    "not(../static) and (../../enable or ../../disable)";
                                  presence
                                    "Indicates a dynamic node is configured.";
                                  description
                                    "Move peer to slow update group on detection";
                                  container permanent {
                                    must
                                      "not(../disable)";
                                    presence
                                      "Indicates a permanent node is configured.";
                                    description
                                      "Do not revert back peer on recovery";
                                  }  // container permanent
    
                                  container disable {
                                    must
                                      "not(../permanent)";
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable moving slow peer to updgrp";
                                  }  // container disable
                                }  // container dynamic
                              }  // container split-update-group
                            }  // container detection
                          }  // container slow-peer
    
                          container origin-as {
                            description
                              "BGP origin-AS knobs";
                            container validation {
                              description
                                "BGP origin-AS validation knobs";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable RPKI origin-AS validation";
                              }  // container disable
                            }  // container validation
                          }  // container origin-as
    
                          container bestpath {
                            description
                              "Change default route selection criteria";
                            container origin-as {
                              description
                                "BGP origin-AS knobs";
                              container allow {
                                description
                                  "BGP origin-AS knobs";
                                container invalid {
                                  presence
                                    "Indicates a invalid node is configured.";
                                  description
                                    "BGP bestpath selection will allow 'invalid' origin-AS";
                                }  // container invalid
                              }  // container allow
                            }  // container origin-as
                          }  // container bestpath
    
                          container route-policy {
                            description
                              "Apply route policy";
                            leaf in {
                              type xr:Route-policy-name;
                              description
                                "Apply route policy to inbound routes";
                            }
    
                            leaf out {
                              type xr:Route-policy-name;
                              description
                                "Apply route policy to outbound routes";
                            }
                          }  // container route-policy
    
                          container orf {
                            description
                              "Specify ORF and inbound filtering criteria";
                            leaf route-policy {
                              type xr:Route-policy-name;
                              description
                                "Route policy to specify ORF and inbound filter";
                            }
                          }  // container orf
    
                          container remove-private-as {
                            presence
                              "Indicates a entire-aspath node is configured.";
                            description
                              "Remove private AS number from outbound updates";
                            container entire-aspath {
                              must
                                "not(../inheritance-disable or ../internal)";
                              presence
                                "Indicates a entire-aspath node is configured.";
                              description
                                "remove only if all ASes in the path are private";
                            }  // container entire-aspath
    
                            container inheritance-disable {
                              must
                                "not(../entire-aspath or ../internal)";
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent remove-private-AS from being inherited from the parent";
                            }  // container inheritance-disable
    
                            container internal {
                              must
                                "not(../entire-aspath or ../inheritance-disable)";
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "remove only if all ASes in the path are private";
                              container inheritance-disable {
                                presence
                                  "Indicates a inheritance-disable node is configured.";
                                description
                                  "Prevent remove-private-AS from being inherited from the parent";
                              }  // container inheritance-disable
                            }  // container internal
                          }  // container remove-private-as
    
                          container remove-private-as-inbound {
                            must
                              "not(entire-aspath and inheritance-disable)";
                            presence
                              "Indicates a remove-private-as-inbound node is configured.";
                            description
                              "Remove private AS number from inbound updates";
                            container entire-aspath {
                              presence
                                "Indicates a entire-aspath node is configured.";
                              description
                                "remove only if all ASes in the path are private";
                            }  // container entire-aspath
    
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent remove-private-AS from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container remove-private-as-inbound
    
                          container enforce-multiple-labels {
                            presence
                              "Indicates a enforce-multiple-labels node is configured.";
                            description
                              "Enforce support for multiple labels (requires manual session flap)";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent enforce-multiple-labels from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container enforce-multiple-labels
    
                          container route-reflector-client {
                            presence
                              "Indicates a route-reflector-client node is configured.";
                            description
                              "Configure a neighbor as Route Reflector client";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent route-reflector-client from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container route-reflector-client
    
                          container accept-route-legacy-rt {
                            presence
                              "Indicates a accept-route-legacy-rt node is configured.";
                            description
                              "Configure a neighbor to support legacy PE for RT-Constraint AF";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent  accept-route-legacy-RT from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container accept-route-legacy-rt
    
                          container send-community-ebgp {
                            presence
                              "Indicates a send-community-ebgp node is configured.";
                            description
                              "Send community attribute to this external neighbor";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent send-community-ebgp from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container send-community-ebgp
    
                          container send-community-gshut-ebgp {
                            presence
                              "Indicates a send-community-gshut-ebgp node is configured.";
                            description
                              "Allow the g-shut community to be sent to this external neighbor";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent send-community-gshut-ebgp from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container send-community-gshut-ebgp
    
                          container send-extended-community-ebgp {
                            presence
                              "Indicates a send-extended-community-ebgp node is configured.";
                            description
                              "Send extended community attribute to this external neighbor";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent send-extended-community-ebgp from being inherited from parent";
                            }  // container inheritance-disable
                          }  // container send-extended-community-ebgp
    
                          container soft-reconfiguration {
                            description
                              "Per neighbor soft reconfiguration";
                            container inbound {
                              presence
                                "Indicates a inbound node is configured.";
                              description
                                "Allow inbound soft reconfiguration for this neighbor";
                              container rpki-dropped-only {
                                must
                                  "not(../rpki-tested-only or ../always or ../inheritance-disable)";
                                presence
                                  "Indicates a rpki-dropped-only node is configured.";
                                description
                                  "Use soft-reconfig, for paths dropped by route-policy which have RPKI validity state check";
                              }  // container rpki-dropped-only
    
                              container rpki-tested-only {
                                must
                                  "not(../rpki-dropped-only or ../always or ../inheritance-disable)";
                                presence
                                  "Indicates a rpki-tested-only node is configured.";
                                description
                                  "Use soft-reconfig for paths tested or dropped by route-policy which have RPKI validity state check";
                              }  // container rpki-tested-only
    
                              container always {
                                must
                                  "not(../rpki-dropped-only or ../rpki-tested-only or ../inheritance-disable)";
                                presence
                                  "Indicates a always node is configured.";
                                description
                                  "Always use soft reconfig, even if route refresh is supported";
                              }  // container always
    
                              container inheritance-disable {
                                must
                                  "not(../rpki-dropped-only or ../rpki-tested-only or ../always)";
                                presence
                                  "Indicates a inheritance-disable node is configured.";
                                description
                                  "Prevent soft-reconfiguration from being inherited from the parent";
                              }  // container inheritance-disable
                            }  // container inbound
                          }  // container soft-reconfiguration
    
                          container update {
                            description
                              "BGP out bound message";
                            container out {
                              description
                                "BGP out bound message handling";
                              container originator-loopcheck {
                                presence
                                  "Indicates a originator-loopcheck node is configured.";
                                description
                                  "Loop check for same originator which sent the route";
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable originator loop check";
                                }  // container disable
                              }  // container originator-loopcheck
                            }  // container out
                          }  // container update
    
                          container advertise {
                            description
                              "Per neighbor advertisement options";
                            container permanent-network {
                              when
                                "../../af-name != 'vpnv4-unicast' and
    ../../af-name != 'vpnv4-multicast' and
    ../../af-name != 'vpnv4-flowspec' and
    ../../af-name != 'vpnv6-flowspec' and
    ../../af-name != 'vpnv6-multicast' and
    ../../af-name != 'vpnv6-unicast' and
    ../../af-name != 'l2vpn-evpn' and
    ../../af-name != 'l2vpn-mspw' and
    ../../af-name != 'l2vpn-vpls-vpws'";
                              presence
                                "Indicates a permanent-network node is configured.";
                              description
                                "Allow permanent networks for this neighbor";
                            }  // container permanent-network
    
                            container local-labeled-route {
                              when
                                "../../af-name != 'vpnv4-unicast' and
    ../../af-name != 'vpnv4-multicast' and
    ../../af-name != 'vpnv4-flowspec' and
    ../../af-name != 'vpnv6-flowspec' and
    ../../af-name != 'vpnv6-multicast' and
    ../../af-name != 'vpnv6-unicast' and
    ../../af-name != 'l2vpn-evpn' and
    ../../af-name != 'l2vpn-mspw' and
    ../../af-name != 'l2vpn-vpls-vpws'";
                              presence
                                "Indicates a local-labeled-route node is configured.";
                              description
                                "Advertisement of routes with local-label";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Do not advertise routes with local-label via Unicast SAFI";
                              }  // container disable
                            }  // container local-labeled-route
    
                            container vpnv4 {
                              when
                                "../../af-name = 'vpnv4-unicast' or
    ../../af-name = 'vpnv6-unicast' or
    ../../af-name = 'l2vpn-evpn'";
                              description
                                "VPNv4 Address Family";
                              container unicast {
                                description
                                  "Address Family modifier";
                                container enable {
                                  presence
                                    "Indicates an enable node is configured.";
                                  description
                                    "Enable advertise vpnv4 unicast";
                                  container re-originated {
                                    presence
                                      "Indicates a re-originated node is configured.";
                                    description
                                      "Advertise re-orignated and local routes only";
                                    container stitching-rt {
                                      presence
                                        "Indicates a stitching-rt node is configured.";
                                      description
                                        "Advertise re-originated and local routes with stitching Route-Targets";
                                    }  // container stitching-rt
                                  }  // container re-originated
                                }  // container enable
    
                                container imported-from-default-vrf {
                                  description
                                    "Default VRF imported routes";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable advertisement of default VRF imported routes";
                                  }  // container disable
                                }  // container imported-from-default-vrf
    
                                container imported-from-vrf {
                                  description
                                    "VRF extranet imported routes";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable advertisement of VRF extranet imported routes";
                                  }  // container disable
                                }  // container imported-from-vrf
    
                                container imported-from-bridgedomain {
                                  description
                                    "VRF EVPN extranet imported routes ";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable advertisement of VRF EVPN extranet imported routes";
                                  }  // container disable
                                }  // container imported-from-bridgedomain
                              }  // container unicast
                            }  // container vpnv4
    
                            container vpnv6 {
                              when
                                "../../af-name = 'vpnv4-unicast' or
    ../../af-name = 'vpnv6-unicast' or
    ../../af-name = 'l2vpn-evpn'";
                              description
                                "VPNv6 Address Family";
                              container unicast {
                                description
                                  "Address Family modifier";
                                container enable {
                                  presence
                                    "Indicates an enable node is configured.";
                                  description
                                    "Enable advertise vpnv6 unicast";
                                  container re-originated {
                                    presence
                                      "Indicates a re-originated node is configured.";
                                    description
                                      "Advertise Re-orignated routes only";
                                    container stitching-rt {
                                      presence
                                        "Indicates a stitching-rt node is configured.";
                                      description
                                        "Advertise re-originated routes with stitching Route-Targets";
                                    }  // container stitching-rt
                                  }  // container re-originated
                                }  // container enable
    
                                container imported-from-default-vrf {
                                  description
                                    "Default VRF imported routes";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable advertisement of default VRF imported routes";
                                  }  // container disable
                                }  // container imported-from-default-vrf
    
                                container imported-from-vrf {
                                  description
                                    "VRF extranet imported routes";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable advertisement of VRF extranet imported routes";
                                  }  // container disable
                                }  // container imported-from-vrf
    
                                container imported-from-bridgedomain {
                                  description
                                    "VRF EVPN extranet imported routes";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable advertisement of VRF EVPN extranet imported routes";
                                  }  // container disable
                                }  // container imported-from-bridgedomain
                              }  // container unicast
                            }  // container vpnv6
    
                            container l2vpn {
                              when
                                "../../af-name = 'vpnv4-unicast' or
    ../../af-name = 'vpnv6-unicast' or
    ../../af-name = 'l2vpn-evpn'";
                              description
                                "L2VPN Address Family";
                              container evpn {
                                when
                                  "../../../af-name = 'l2vpn-evpn'";
                                presence
                                  "Indicates a evpn node is configured.";
                                description
                                  "Address Family modifier";
                                container re-originated {
                                  presence
                                    "Indicates a re-originated node is configured.";
                                  description
                                    "Advertise Re-orignated routes only";
                                  container stitching-rt {
                                    presence
                                      "Indicates a stitching-rt node is configured.";
                                    description
                                      "Advertise re-originated routes with stitching Route-Targets";
                                  }  // container stitching-rt
                                }  // container re-originated
                              }  // container evpn
    
                              container evpn-disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable Advertisement of selected SAFI";
                              }  // container evpn-disable
    
                              container vpls-vpws {
                                description
                                  "Address Family modifier";
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable Advertisement of selected SAFI";
                                }  // container disable
                              }  // container vpls-vpws
    
                              container mspw {
                                description
                                  "Address Family modifier";
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable Advertisement of selected SAFI";
                                }  // container disable
                              }  // container mspw
                            }  // container l2vpn
                          }  // container advertise
    
                          container encapsulation-type {
                            when
                              "../af-name = 'ipv4-unicast' or
    ../af-name = 'ipv6-unicast' or
    ../af-name = 'vpnv4-unicast' or
    ../af-name = 'vpnv6-unicast' or
    ../af-name = 'l2vpn-evpn'";
                            description
                              "Specify encapsulation type";
                            container vxlan {
                              when
                                "../../af-name = 'vpnv4-unicast' or
    ../../af-name = 'vpnv6-unicast' or
    ../../af-name = 'l2vpn-evpn'";
                              must
                                "not(../srv6)";
                              presence
                                "Indicates a vxlan node is configured.";
                              description
                                "VxLAN encapsulation";
                            }  // container vxlan
    
                            container srv6 {
                              when
                                "../../af-name != 'l2vpn-evpn'";
                              must
                                "not(../vxlan)";
                              presence
                                "Indicates a srv6 node is configured.";
                              description
                                "SRv6 encapsulation";
                            }  // container srv6
                          }  // container encapsulation-type
    
                          container segment-routing {
                            when
                              "../af-name = 'vpnv4-unicast'";
                            description
                              "enable segment-routing srv6 version 4";
                            container srv6 {
                              description
                                "srv6 version 4";
                              container prefix-sid-type4 {
                                presence
                                  "Indicates a prefix-sid-type4 node is configured.";
                                description
                                  "Enable prefix sid version 4 encoding";
                              }  // container prefix-sid-type4
                            }  // container srv6
                          }  // container segment-routing
    
                          container import {
                            when
                              "../af-name = 'vpnv4-unicast' or ../af-name = 'vpnv6-unicast'  or ../af-name = 'l2vpn-evpn'";
                            description
                              "Import options for neighbor address-family routes";
                            container stitching-rt {
                              presence
                                "Indicates a stitching-rt node is configured.";
                              description
                                "Import routes using stitching RTs";
                              container re-originate {
                                presence
                                  "Indicates a re-originate node is configured.";
                                description
                                  "Re-originate imported routes";
                                container stitching-rt {
                                  presence
                                    "Indicates a stitching-rt node is configured.";
                                  description
                                    "Reoriginate imported routes by attaching stitching RTs";
                                }  // container stitching-rt
                              }  // container re-originate
                            }  // container stitching-rt
                          }  // container import
    
                          leaf weight {
                            type uint32 {
                              range "0..65535";
                            }
                            description
                              "Set default weight for routes from this neighbor";
                          }
    
                          container allowas-in {
                            presence
                              "Indicates a allowas-in node is configured.";
                            description
                              "Allow as-path with my AS present in it";
                            leaf number-of-occurences {
                              type uint32 {
                                range "1..10";
                              }
                              description
                                "Number of occurences of AS number";
                            }
                          }  // container allowas-in
    
                          container long-lived-graceful-restart {
                            description
                              "Enable long lived graceful restart support";
                            container stale-time {
                              description
                                "Maximum time to wait before purging long-lived stale routes";
                              leaf send {
                                type uint32 {
                                  range
                                    "0..16777215";
                                }
                                description
                                  "Stale-time sent in LLGR Capability";
                              }
    
                              leaf accept {
                                type uint32 {
                                  range
                                    "0..16777215";
                                }
                                description
                                  "Maximum stale-time acceptable from neighbor";
                              }
                            }  // container stale-time
    
                            container capable {
                              presence
                                "Indicates a capable node is configured.";
                              description
                                "Treat neighbor as LLGR capable";
                            }  // container capable
                          }  // container long-lived-graceful-restart
    
                          container as-override {
                            presence
                              "Indicates a as-override node is configured.";
                            description
                              "Override matching AS-number while sending update";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent as-override from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container as-override
    
                          container aigp {
                            presence
                              "Indicates a aigp node is configured.";
                            description
                              "Enable AIGP for this neighbor ";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable AIGP";
                            }  // container disable
                          }  // container aigp
    
                          container aigp-send {
                            description
                              "Copy AIGP";
                            container cost-community {
                              must
                                "(cost-community-id and poi) or disable";
                              presence
                                "Indicates a cost-community node is configured.";
                              description
                                "Send AIGP value in Cost Community";
                              leaf cost-community-id {
                                type uint32 {
                                  range "0..255";
                                }
                                must
                                  "not(../disable)";
                                description
                                  "Cost community ID";
                              }
    
                              container poi {
                                must
                                  "(igp-cost or pre-bestpath) and not(igp-cost and pre-bestpath)";
                                presence
                                  "Indicates a poi node is configured.";
                                description
                                  "Point of insertion for bestpath calculation";
                                container igp-cost {
                                  presence
                                    "Indicates a igp-cost node is configured.";
                                  description
                                    "Cost community is used after IGP distance to next hop";
                                  container transitive {
                                    presence
                                      "Indicates a transitive node is configured.";
                                    description
                                      "Enable transitive cost community";
                                  }  // container transitive
                                }  // container igp-cost
    
                                container pre-bestpath {
                                  presence
                                    "Indicates a pre-bestpath node is configured.";
                                  description
                                    "Cost community is first step in best path calculation";
                                  container transitive {
                                    presence
                                      "Indicates a transitive node is configured.";
                                    description
                                      "Enable transitive cost community";
                                  }  // container transitive
                                }  // container pre-bestpath
                              }  // container poi
    
                              container disable {
                                must
                                  "not(../cost-community-id)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable aigp send cost-community";
                              }  // container disable
                            }  // container cost-community
    
                            container med {
                              presence
                                "Indicates a med node is configured.";
                              description
                                "Send AIGP value in MED";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable aigp send med";
                              }  // container disable
                            }  // container med
                          }  // container aigp-send
    
                          container validation {
                            when
                              "../af-name = 'ipv4-flowspec' or ../af-name = 'ipv6-flowspec'";
                            presence
                              "Indicates a validation node is configured.";
                            description
                              "Flowspec Validation for this neighbor ";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable Flowspec Validation";
                            }  // container disable
    
                            container redirect {
                              description
                                "Flowspec Redirect nexthop Validation";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable Flowspec Redirect nexthop Validation";
                              }  // container disable
                            }  // container redirect
                          }  // container validation
    
                          container send-multicast-attributes {
                            when
                              "../af-name = 'ipv4-unicast' or ../af-name = 'ipv6-unicast' or ../af-name = 'ipv4-labeled-unicast' or ../af-name = 'ipv6-labeled-unicast' or ../af-name = 'ipv4-multicast' or ../af-name = 'ipv6-multicast' or ../af-name = 'ipv4-mvpn' or ../af-name = 'ipv6-mvpn'";
                            presence
                              "Indicates a send-multicast-attributes node is configured.";
                            description
                              "Send multicast attributes to this neighbor ";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable send multicast attribute";
                            }  // container disable
                          }  // container send-multicast-attributes
    
                          container signalling {
                            description
                              "Signalling protocols to disable, BGP or LDP";
                            container bgp {
                              description
                                "Select BGP to disable";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable Signalling type";
                              }  // container disable
                            }  // container bgp
    
                            container ldp {
                              description
                                "Select LDP to disable";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable Signalling type";
                              }  // container disable
                            }  // container ldp
                          }  // container signalling
    
                          container accept-own {
                            presence
                              "Indicates a accept-own node is configured.";
                            description
                              "Handle self-originated routes with Accept-Own community";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent item being inherited from a parent group";
                            }  // container inheritance-disable
                          }  // container accept-own
    
                          container cluster-id {
                            description
                              "Allow routes with first cluster-id in list is same as the router's cluster id";
                            container allow-equal {
                              presence
                                "Indicates a allow-equal node is configured.";
                              description
                                "Accept routes with first cluster-id in list is same as the router's cluster id";
                              container disable {
                                presence
                                  "Indicates a allow-equal node is configured.";
                                description
                                  "Prevent the configuration from being inherited.";
                              }  // container disable
                            }  // container allow-equal
                          }  // container cluster-id
    
                          container multipath {
                            presence
                              "Indicates a multipath node is configured.";
                            description
                              "Paths from this neighbor is eligible for multipath";
                          }  // container multipath
                        }  // list address-family
                      }  // container address-families
    
                      container update {
                        description
                          "BGP Update configuration";
                        container in {
                          description
                            "Inbound update message handling";
                          container filtering {
                            presence
                              "Indicates a filtering node is configured.";
                            description
                              "Inbound update message filtering";
                            container message {
                              description
                                "Filtered update messages";
                              container buffers {
                                presence
                                  "Indicates a buffers node is configured.";
                                description
                                  "Filtered update message buffers";
                                leaf number-of-buffers {
                                  type uint32 {
                                    range
                                      "0..25";
                                  }
                                  mandatory
                                    true;
                                  description
                                    "Filtered update message buffers";
                                }
    
                                container non-circular {
                                  presence
                                    "Indicates a non-circular node is configured.";
                                  description
                                    "Message buffer list is not circular";
                                }  // container non-circular
                              }  // container buffers
                            }  // container message
    
                            container logging {
                              description
                                "Update filtering syslog message";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable update filtering syslog message";
                              }  // container disable
                            }  // container logging
    
                            container attribute-filter {
                              description
                                "Attribute-filter configuration";
                              leaf group {
                                type string {
                                  length
                                    "1..1024";
                                }
                                description
                                  "Attribute-filter group configuration";
                              }
                            }  // container attribute-filter
                          }  // container filtering
    
                          container merge {
                            description
                              "Merge incoming updates";
                            container safi {
                              description
                                "SAFI of the NLRIs to merge";
                              container unicast {
                                description
                                  "IPv4/IPv6 unicast paths";
                                container labeled-unicast {
                                  presence
                                    "Indicates a labeled-unicast node is configured.";
                                  description
                                    "IPv4/IPv6 labeled-unicast paths";
                                  container inheritance-disable {
                                    presence
                                      "Indicates a inheritance-disable node is configured.";
                                    description
                                      "Do not inherit this configuration from parent group";
                                  }  // container inheritance-disable
                                }  // container labeled-unicast
                              }  // container unicast
                            }  // container safi
                          }  // container merge
                        }  // container in
                      }  // container update
    
                      container graceful-maintenance {
                        presence
                          "Indicates a graceful-maintenance node is configured.";
                        description
                          "Attributes for Graceful Maintenance. This will cause neig dprefer routes from this router and choonas. This allows the router to be brourt of service gracefully.";
                        container local-preference {
                          must
                            "local-preference-value or inheritance-disable";
                          presence
                            "Indicates a local-preference node is configured.";
                          description
                            "local preference with which to advertise routes to ibgps. Default=No Touch";
                          leaf local-preference-value {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "Range of values for Local Preference";
                          }
    
                          container inheritance-disable {
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent local preference from being inherited from the parent";
                          }  // container inheritance-disable
                        }  // container local-preference
    
                        container as-prepends {
                          must
                            "number-of-as-prepends or inheritance-disable";
                          presence
                            "Indicates a as-prepends node is configured.";
                          description
                            "Number of times to prepend the local AS number to the AS pous. Default=0";
                          leaf number-of-as-prepends {
                            type uint32 {
                              range "0..6";
                            }
                            description
                              "Range of number of AS prepends";
                          }
    
                          container inheritance-disable {
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent AS prepends from being inherited from the parent";
                          }  // container inheritance-disable
                        }  // container as-prepends
    
                        container activate {
                          presence
                            "Indicates a activate node is configured.";
                          description
                            "Routes will be announced with the graceful maintenance
    attrhi activated either here or under router
    bgp atn. While activated, all routes to this
    neigl  announced with the attributes
    conferand all routes from this neighbor will
    be a tother neighbors with the graceful
    mainatibutes configured under those
    neighe-shut community will be announced
    regaf e other attributes configured here. To
    allosh community to be announced to ebgp
    neigheend-community-gshut-ebgp configuration
    is air. Note: changes to the attributes will
    not ecwhile activated.";
                          container inheritance-disable {
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent activate from being inherited from the parent";
                          }  // container inheritance-disable
                        }  // container activate
                      }  // container graceful-maintenance
    
                      leaf remote-as {
                        type xr:Bgp-as-number;
                        description
                          "bgp as-number";
                      }
    
                      leaf remote-as-list {
                        type string {
                          length "1..1024";
                        }
                        description
                          "Remote as-list configuration";
                      }
    
                      container use {
                        description
                          "Inherit configuration from a group";
                        leaf session-group {
                          type string {
                            length "1..1024";
                          }
                          description
                            "Inherit address-family independent config from a session-group";
                        }
    
                        leaf neighbor-group {
                          type string {
                            length "1..1024";
                          }
                          description
                            "Inherit configuration from a neighbor-group";
                        }
                      }  // container use
    
                      container advertisement-interval {
                        presence
                          "Indicates a advertisement-interval node is configured.";
                        description
                          "Minimum interval between sending BGP routing updates";
                        leaf time-in-seconds {
                          type uint32 {
                            range "0..600";
                          }
                          mandatory true;
                          description
                            "Minimum interval between sending BGP routing updates";
                        }
    
                        leaf time-in-milliseconds {
                          type uint32 {
                            range "0..999";
                          }
                          description
                            "time in milliseconds";
                        }
                      }  // container advertisement-interval
    
                      leaf description {
                        type string {
                          length "1..1024";
                        }
                        description
                          "Neighbor specific description";
                      }
    
                      container ignore-connected-check {
                        presence
                          "Indicates a ignore-connected-check node is configured.";
                        description
                          "Bypass the directly connected nexthop check for single-hop eBGP peering";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent ignore-connected-check from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container ignore-connected-check
    
                      container ebgp-multihop {
                        presence
                          "Indicates a ebgp-multihop node is configured.";
                        description
                          "Allow EBGP neighbors not on directly connected networks";
                        leaf maximum-hop-count {
                          type uint32 {
                            range "1..255";
                          }
                          mandatory true;
                          description
                            "maximum hop count";
                        }
    
                        container mpls {
                          presence
                            "Indicates a mpls node is configured.";
                          description
                            "Disable BGP MPLS forwarding";
                        }  // container mpls
                      }  // container ebgp-multihop
    
                      container tcp {
                        description
                          "TCP session configuration commands";
                        container mss {
                          must
                            "initial-mss or inheritance-disable";
                          presence
                            "Indicates a mss node is configured.";
                          description
                            "Maximum Segment Size";
                          leaf initial-mss {
                            type uint32 {
                              range "68..10000";
                            }
                            description
                              "TCP initial maximum segment size";
                          }
    
                          container inheritance-disable {
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent tcp mss from being inherited from the parent";
                          }  // container inheritance-disable
                        }  // container mss
                      }  // container tcp
    
                      container bmp-activate {
                        description
                          "Enable BMP logging for this neighbor";
                        container servers {
                          description
                            "Enable BMP connection to particular server";
                          list server {
                            key "server-id";
                            description
                              "Enable BMP connection to particular server";
                            leaf server-id {
                              type uint32 {
                                range "1..8";
                              }
                              description
                                "Enable BMP connection to particular server";
                            }
                          }  // list server
                        }  // container servers
                      }  // container bmp-activate
    
                      container bfd {
                        description
                          "Configure BFD parameters";
                        container fast-detect {
                          must
                            "not(strict-mode and inheritance-disable)";
                          presence
                            "Indicates a fast-detect node is configured.";
                          description
                            "Enable Fast detection";
                          container strict-mode {
                            presence
                              "Indicates a strict-mode node is configured.";
                            description
                              "Hold down neighbor session until BFD session is up";
                          }  // container strict-mode
    
                          container inheritance-disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Prevent bfd settings from being inherited from the parent";
                          }  // container inheritance-disable
                        }  // container fast-detect
    
                        leaf minimum-interval {
                          type uint32 {
                            range "3..30000";
                          }
                          description
                            "Hello interval";
                        }
    
                        leaf multiplier {
                          type uint32 {
                            range "2..16";
                          }
                          description
                            "Detect multiplier";
                        }
                      }  // container bfd
    
                      container keychain {
                        must
                          "name or inheritance-disable";
                        presence
                          "Indicates a keychain node is configured.";
                        description
                          "Set keychain based authentication";
                        leaf name {
                          type string {
                            length "1..32";
                          }
                          description
                            "Name of the key chain - maximum 32 characters";
                        }
    
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent keychain from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container keychain
    
                      container local-as {
                        must
                          "as-number or inheritance-disable";
                        presence
                          "Indicates a local-as node is configured.";
                        description
                          "Specify local AS number";
                        leaf as-number {
                          type xr:Bgp-as-number;
                          description
                            "bgp as-number";
                        }
    
                        container no-prepend {
                          presence
                            "Indicates a no-prepend node is configured.";
                          description
                            "Do not prepend local AS to announcements from this neighbor";
                          container replace-as {
                            presence
                              "Indicates a replace-as node is configured.";
                            description
                              "Prepend only local AS to announcements to this neighbor";
                            container dual-as {
                              presence
                                "Indicates a dual-as node is configured.";
                              description
                                "Dual-AS mode";
                            }  // container dual-as
                          }  // container replace-as
                        }  // container no-prepend
    
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent local AS from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container local-as
    
                      container password {
                        must
                          "encrypted or inheritance-disable";
                        presence
                          "Indicates a password node is configured.";
                        description
                          "Set a password";
                        leaf encrypted {
                          type xr:Proprietary-password;
                          description
                            "Specifies an ENCRYPTED password will follow";
                        }
    
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent password from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container password
    
                      container receive-buffer-size {
                        presence
                          "Indicates a receive-buffer-size node is configured.";
                        description
                          "Set socket and BGP receive buffer size";
                        leaf receive-socket-buffer-size {
                          type uint32 {
                            range "512..131072";
                          }
                          mandatory true;
                          description
                            "Set socket and BGP receive buffer size";
                        }
    
                        leaf bgp-read-buffer-size {
                          type uint32 {
                            range "512..131072";
                          }
                          description
                            "BGP Read buffer size in bytes";
                        }
                      }  // container receive-buffer-size
    
                      container send-buffer-size {
                        presence
                          "Indicates a send-buffer-size node is configured.";
                        description
                          "Set socket and BGP send buffer size";
                        leaf send-socket-buffer-size {
                          type uint32 {
                            range "4096..131072";
                          }
                          mandatory true;
                          description
                            "Set socket and BGP send buffer size";
                        }
    
                        leaf bgp-write-buffer-size {
                          type uint32 {
                            range "4096..131072";
                          }
                          description
                            "BGP Write buffer size in bytes";
                        }
                      }  // container send-buffer-size
    
                      container shutdown {
                        presence
                          "Indicates a shutdown node is configured.";
                        description
                          "Administratively shut down this neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent this neighbor being shutdown, even if its parent is";
                        }  // container inheritance-disable
                      }  // container shutdown
    
                      container timers {
                        presence
                          "Indicates a timers node is configured.";
                        description
                          "BGP per neighbor timers";
                        leaf keepalive-interval {
                          type uint32 {
                            range "0..65535";
                          }
                          mandatory true;
                          description
                            "BGP timers";
                        }
    
                        leaf holdtime {
                          type union {
                            type uint32 {
                              range "0";
                            }
                            type uint32 {
                              range "3..65535";
                            }
                          }
                          mandatory true;
                          description
                            "Holdtime. Set 0 to disable keepalives/hold time.";
                        }
    
                        leaf minimum-acceptable-holdtime {
                          type union {
                            type uint32 {
                              range "0";
                            }
                            type uint32 {
                              range "3..65535";
                            }
                          }
                          description
                            "Minimum acceptable holdtime from neighbor. Set 0 to disable keepalives/hold time.";
                        }
                      }  // container timers
    
                      container local {
                        description
                          "Configure local parameter";
                        container address {
                          must
                            "ip-address or inheritance-disable";
                          presence
                            "Indicates a address node is configured.";
                          description
                            "use configured local address for bgp peering";
                          leaf ip-address {
                            type inet:ip-address-no-zone;
                            description
                              "IPv4 address";
                          }
    
                          container inheritance-disable {
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent local address from being inherited from parent";
                          }  // container inheritance-disable
                        }  // container address
                      }  // container local
    
                      container log {
                        description
                          "Logging update messages per neighbor";
                        container message {
                          description
                            "Logging update/notification messages per neighbor";
                          container in {
                            description
                              "Inbound log messages";
                            leaf message-log-buffer-size {
                              type uint32 {
                                range "1..500";
                              }
                              description
                                "Range for message log buffer size";
                            }
    
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable inbound message logging";
                            }  // container disable
    
                            container inheritance-diable {
                              presence
                                "Indicates a inheritance-diable node is configured.";
                              description
                                "Prevents the msg log from being inherited from the parent";
                            }  // container inheritance-diable
                          }  // container in
    
                          container out {
                            description
                              "Outbound log messages";
                            leaf message-log-buffer-size {
                              type uint32 {
                                range "1..500";
                              }
                              description
                                "Range for message log buffer size";
                            }
    
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable outbound message logging";
                            }  // container disable
    
                            container inheritance-diable {
                              presence
                                "Indicates a inheritance-diable node is configured.";
                              description
                                "Prevents the msg log from being inherited from the parent";
                            }  // container inheritance-diable
                          }  // container out
                        }  // container message
                      }  // container log
    
                      leaf update-source {
                        type xr:Interface-name;
                        description
                          "Source of routing updates";
                      }
    
                      container local-address-subnet {
                        description
                          "Local address subnet of routing updates";
                        leaf ip-address {
                          type inet:ip-address-no-zone;
                          description
                            "IP address and mask length";
                        }
    
                        leaf mask-length {
                          type uint32 {
                            range "0..128";
                          }
                          description
                            "IP address and mask length";
                        }
                      }  // container local-address-subnet
    
                      container dmz-link-bandwidth {
                        presence
                          "Indicates a dmz-link-bandwidth node is configured.";
                        description
                          "Propagate the DMZ link bandwidth";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent dmz-link-bandwidth from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container dmz-link-bandwidth
    
                      container ebgp-recv-extcommunity-dmz {
                        presence
                          "Indicates a ebgp-recv-extcommunity-dmz node is configured.";
                        description
                          "Receive extcommunity dmz link bandwidth from ebgp neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent ebgp-send-community-dmz from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container ebgp-recv-extcommunity-dmz
    
                      container ebgp-send-extcommunity-dmz {
                        must
                          "not(cumulative and inheritance-disable)";
                        presence
                          "Indicates a ebgp-send-extcommunity-dmz node is configured.";
                        description
                          "Send extended community dmz link bandwidth to ebgp neighbor";
                        container cumulative {
                          presence
                            "Indicates a cumulative node is configured.";
                          description
                            "Send cumulative community dmz link bandwidth of all multipaths to ebgp neighbor";
                        }  // container cumulative
    
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent ebgp-send-extcommunity-dmz from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container ebgp-send-extcommunity-dmz
    
                      container ttl-security {
                        presence
                          "Indicates a ttl-security node is configured.";
                        description
                          "Enable EBGP TTL security";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent ttl-security from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container ttl-security
    
                      container session-open-mode {
                        description
                          "Establish BGP session using this TCP open mode";
                        container active-only {
                          must
                            "not(../passive-only or ../both)";
                          presence
                            "Indicates a active-only node is configured.";
                          description
                            "Active only";
                        }  // container active-only
    
                        container passive-only {
                          must
                            "not(../active-only or ../both)";
                          presence
                            "Indicates a passive-only node is configured.";
                          description
                            "Passive only";
                        }  // container passive-only
    
                        container both {
                          must
                            "not(../active-only or ../passive-only)";
                          presence
                            "Indicates a both node is configured.";
                          description
                            "Prevent session-open-mode being inherited from the parent";
                        }  // container both
                      }  // container session-open-mode
    
                      leaf dscp {
                        type enumeration {
                          enum "default" {
                            value 0;
                            description
                              "Set packets with default dscp (000000)";
                          }
                          enum "cs1" {
                            value 8;
                            description
                              "Set packets with CS1(precedence 1) dscp (001000)";
                          }
                          enum "af11" {
                            value 10;
                            description
                              "Set packets with AF11 dscp (001010)";
                          }
                          enum "af12" {
                            value 12;
                            description
                              "Set packets with AF12 dscp (001100)";
                          }
                          enum "af13" {
                            value 14;
                            description
                              "Set packets with AF13 dscp (001110)";
                          }
                          enum "cs2" {
                            value 16;
                            description
                              "Set packets with CS2(precedence 2) dscp (010000)";
                          }
                          enum "af21" {
                            value 18;
                            description
                              "Set packets with AF21 dscp (010010)";
                          }
                          enum "af22" {
                            value 20;
                            description
                              "Set packets with AF22 dscp (010100)";
                          }
                          enum "af23" {
                            value 22;
                            description
                              "Set packets with AF23 dscp (010110)";
                          }
                          enum "cs3" {
                            value 24;
                            description
                              "Set packets with CS3(precedence 3) dscp (011000)";
                          }
                          enum "af31" {
                            value 26;
                            description
                              "Set packets with AF31 dscp (011010)";
                          }
                          enum "af32" {
                            value 28;
                            description
                              "Set packets with AF32 dscp (011100)";
                          }
                          enum "af33" {
                            value 30;
                            description
                              "Set packets with AF33 dscp (011110)";
                          }
                          enum "cs4" {
                            value 32;
                            description
                              "Set packets with CS4(precedence 4) dscp (100000)";
                          }
                          enum "af41" {
                            value 34;
                            description
                              "Set packets with AF41 dscp (100010)";
                          }
                          enum "af42" {
                            value 36;
                            description
                              "Set packets with AF42 dscp (100100)";
                          }
                          enum "af43" {
                            value 38;
                            description
                              "Set packets with AF43 dscp (100110)";
                          }
                          enum "cs5" {
                            value 40;
                            description
                              "Set packets with CS5(precedence 5) dscp (101000)";
                          }
                          enum "ef" {
                            value 46;
                            description
                              "Set packets with EF dscp (101110)";
                          }
                          enum "cs6" {
                            value 48;
                            description
                              "Set packets with CS6(precedence 6) dscp (110000)";
                          }
                          enum "cs7" {
                            value 56;
                            description
                              "Set packets with CS7(precedence 7) dscp (111000)";
                          }
                        }
                        description
                          "Set IP DSCP (DiffServ CodePoint)";
                      }
    
                      leaf precedence {
                        type enumeration {
                          enum "routine" {
                            value 0;
                            description
                              "Set packets with routine precedence (0)";
                          }
                          enum "priority" {
                            value 1;
                            description
                              "Set packets with priority precedence (1)";
                          }
                          enum "immediate" {
                            value 2;
                            description
                              "Set packets with immediate precedence (2)";
                          }
                          enum "flash" {
                            value 3;
                            description
                              "Set packets with flash precedence (3)";
                          }
                          enum "flash-override" {
                            value 4;
                            description
                              "Set packets with flash override precedence (4)";
                          }
                          enum "critical" {
                            value 5;
                            description
                              "Set packets with critical precedence (5)";
                          }
                          enum "internet" {
                            value 6;
                            description
                              "Set packets with internetwork control precedence (6)";
                          }
                          enum "network" {
                            value 7;
                            description
                              "Set packets with network control precedence (7)";
                          }
                        }
                        description
                          "Set precedence";
                      }
    
                      container capability {
                        description
                          "Advertise capability to the peer";
                        container suppress {
                          description
                            "Suppress advertising capability to the peer ";
                          container four-byte-as {
                            presence
                              "Indicates a four-byte-as node is configured.";
                            description
                              "4-byte-as capability";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent capability suppress 4-type-as being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container four-byte-as
    
                          container all {
                            presence
                              "Indicates a all node is configured.";
                            description
                              "All capabilities";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Do not inherit this configuration from parent group";
                            }  // container inheritance-disable
                          }  // container all
    
                          container extended-nexthop-encoding {
                            presence
                              "Indicates a extended-nexthop-encoding node is configured.";
                            description
                              "Extended-nexthop-encoding capabilities (IETF RFC 5549)";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Do not inherit this configuration from parent group";
                            }  // container inheritance-disable
                          }  // container extended-nexthop-encoding
                        }  // container suppress
    
                        container additional-paths {
                          description
                            "Additional paths capability";
                          container send {
                            presence
                              "Indicates a send node is configured.";
                            description
                              "Additional paths Send capability";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Do not advertise additional paths Send capability";
                            }  // container disable
                          }  // container send
    
                          container receive {
                            presence
                              "Indicates a receive node is configured.";
                            description
                              "Additional paths Receive capability";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Do not advertise additional paths Receive capability";
                            }  // container disable
                          }  // container receive
                        }  // container additional-paths
                      }  // container capability
    
                      container graceful-restart {
                        presence
                          "Indicates a graceful-restart node is configured.";
                        description
                          "Enable graceful restart support for this neighbor";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable graceful restart support for this neighbor";
                        }  // container disable
    
                        leaf restart-time {
                          type uint32 {
                            range "1..4095";
                          }
                          description
                            "Restart time advertised to the neighbor";
                        }
    
                        leaf stalepath-time {
                          type uint32 {
                            range "1..4095";
                          }
                          description
                            "Maximum time to wait for restart of GR capable peer";
                        }
                      }  // container graceful-restart
    
                      container enforce-first-as {
                        presence
                          "Indicates a enforce-first-as node is configured.";
                        description
                          "Enforce the first AS for EBGP routes";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Do not enforce the first AS for EBGP routes";
                        }  // container disable
                      }  // container enforce-first-as
    
                      container cluster-id {
                        description
                          "Enter cluster id for this neighbor";
                        leaf route-reflector-cluster-id {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          description
                            "Route-Reflector Cluster-id as 32 bit quantity";
                        }
    
                        leaf ip-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "Route-Reflector Cluster-id in IP address format";
                        }
                      }  // container cluster-id
    
                      leaf maximum-peers {
                        type uint32 {
                          range "1..4095";
                        }
                        description
                          "Maximum dynamic neighbors";
                      }
    
                      leaf idle-watch-time {
                        type uint32 {
                          range "30..1800";
                        }
                        description
                          "Maximum time to wait for deletion of IDLE state dynamic peer";
                      }
    
                      container egress-engineering {
                        presence
                          "Indicates a egress-engineering node is configured.";
                        description
                          "Enable egress peer engineering for this neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Do not inherit egress-engineering from the parent";
                        }  // container inheritance-disable
                      }  // container egress-engineering
    
                      container peer-sets {
                        description
                          "Assign this neighbor to a peer-set used for egress peer engineering";
                        list peer-set {
                          key "peer-set-id";
                          description
                            "Assign this neighbor to a peer-set used for egress peer engineering";
                          leaf peer-set-id {
                            type uint32 {
                              range "1..255";
                            }
                            description
                              "Assign this neighbor to a peer-set used for egress peer engineering";
                          }
                        }  // list peer-set
                      }  // container peer-sets
    
                      container peer-node-sid {
                        description
                          "Assign this neighbor a manual SID for egress peer engineering";
                        leaf index {
                          type uint32 {
                            range "0..1033575";
                          }
                          description
                            "Segment Index value which is offset of SRLB";
                        }
                      }  // container peer-node-sid
    
                      container ao {
                        description
                          "Enable Authentiation Option";
                        leaf key-chain-name {
                          type string {
                            length "1..32";
                          }
                          must
                            "not(../inheritance-disable) and (../include-tcp-options/enable or ../include-tcp-options/disable)";
                          description
                            "Name of the key chain - maximum 32 characters";
                        }
    
                        container include-tcp-options {
                          description
                            "Include/Exclude other TCP options in the header";
                          container enable {
                            must
                              "not(../disable or ../../inheritance-disable)";
                            presence
                              "Indicates a enable node is configured.";
                            description
                              "Include other TCP options in the header";
                          }  // container enable
    
                          container disable {
                            must
                              "not(../enable or ../../inheritance-disable)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Exclude other TCP options in the header";
                          }  // container disable
    
                          container accept-ao-mismatch-connection {
                            must
                              "../enable or ../disable";
                            presence
                              "Indicates a accept-ao-mismatch-connection node is configured.";
                            description
                              "Accept new connection even if AO mismatched";
                          }  // container accept-ao-mismatch-connection
                        }  // container include-tcp-options
    
                        container inheritance-disable {
                          must
                            "not(../key-chain-name)";
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent keychain from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container ao
    
                      container origin-as {
                        description
                          "BGP origin-AS knobs";
                        container validation {
                          description
                            "BGP origin-AS validation knobs";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable RPKI origin-AS validation";
                          }  // container disable
                        }  // container validation
                      }  // container origin-as
    
                      container bestpath {
                        description
                          "Change default route selection criteria";
                        container origin-as {
                          description
                            "BGP origin-AS knobs";
                          container allow {
                            description
                              "BGP origin-AS knobs";
                            container invalid {
                              presence
                                "Indicates a invalid node is configured.";
                              description
                                "BGP bestpath selection will allow 'invalid' origin-AS";
                            }  // container invalid
                          }  // container allow
                        }  // container origin-as
                      }  // container bestpath
                    }  // list neighbor
    
                    list neighbor-range {
                      key "neighbor-address prefix-length";
                      description
                        "Neighbor address";
                      leaf neighbor-address {
                        type inet:ip-address-no-zone;
                        description
                          "Neighbor address";
                      }
    
                      leaf prefix-length {
                        type uint32 {
                          range "0..127";
                        }
                        description
                          "Prefix length";
                      }
    
                      container address-families {
                        description
                          "Enter Address Family command mode";
                        list address-family {
                          key "af-name";
                          description
                            "Enter Address Family command mode";
                          leaf af-name {
                            type Bgp-address-family;
                            description
                              "Enter Address Family command mode";
                          }
    
                          container use {
                            description
                              "Inherit configuration for this address-family from a group";
                            leaf af-group {
                              type string {
                                length "1..1024";
                              }
                              description
                                "Inherit configuration for this address-family from an af-group";
                            }
                          }  // container use
    
                          container capability {
                            description
                              "Advertise capability to the peer";
                            container orf {
                              description
                                "Advertise ORF capability to the peer";
                              container prefix {
                                description
                                  "Advertise address prefix ORF capability to this neighbor";
                                container receive {
                                  must
                                    "not(../send or ../both or ../none)";
                                  presence
                                    "Indicates a receive node is configured.";
                                  description
                                    "Capability to RECEIVE the ORF from this neighbor";
                                }  // container receive
    
                                container send {
                                  must
                                    "not(../receive or ../both or ../none)";
                                  presence
                                    "Indicates a send node is configured.";
                                  description
                                    "Capability to SEND the ORF to this neighbor";
                                }  // container send
    
                                container both {
                                  must
                                    "not(../receive or ../send or ../none)";
                                  presence
                                    "Indicates a both node is configured.";
                                  description
                                    "Capability to RECEIVE and SEND the ORF from/to this neighbor";
                                }  // container both
    
                                container none {
                                  must
                                    "not(../receive or ../send or ../both)";
                                  presence
                                    "Indicates a none node is configured.";
                                  description
                                    "No capability to RECEIVE or SEND the ORF from/to this neighbor";
                                }  // container none
                              }  // container prefix
                            }  // container orf
                          }  // container capability
    
                          container default-originate {
                            presence
                              "Indicates a default-originate node is configured.";
                            description
                              "Originate default route to this neighbor";
                            leaf route-policy {
                              type xr:Route-policy-name;
                              description
                                "Route policy to specify criteria to originate default";
                            }
    
                            container inheritance-disable {
                              must
                                "not(../route-policy)";
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent default-originate being inherited from a parent group";
                            }  // container inheritance-disable
                          }  // container default-originate
    
                          container maximum-prefix {
                            presence
                              "Indicates a maximum-prefix node is configured.";
                            description
                              "Maximum number of prefixes to accept from this peer";
                            leaf prefix-limit {
                              type uint32 {
                                range
                                  "1..4294967295";
                              }
                              mandatory true;
                              description
                                "Maximum number of prefixes to accept from this peer";
                            }
    
                            leaf threshold {
                              type uint32 {
                                range "1..100";
                              }
                              mandatory true;
                              description
                                "Threshold value (%) at which to generate a warning msg";
                            }
    
                            container warning-only {
                              presence
                                "Indicates a warning-only node is configured.";
                              description
                                "Only give warning message when limit is exceeded";
                            }  // container warning-only
    
                            leaf restart {
                              type uint32 {
                                range "1..65535";
                              }
                              description
                                "Restart time interval";
                            }
    
                            container discard-extra-paths {
                              presence
                                "Indicates a discard-extra-paths node is configured.";
                              description
                                "Discard extra paths when limit is exceeded";
                            }  // container discard-extra-paths
                          }  // container maximum-prefix
    
                          leaf optimal-route-reflection {
                            type string {
                              length "1..32";
                            }
                            description
                              "Configure optiomal-route-reflection for this neighbor";
                          }
    
                          container next-hop-self {
                            presence
                              "Indicates a next-hop-self node is configured.";
                            description
                              "Disable the next hop calculation for this neighbor";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent next-hop-self from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container next-hop-self
    
                          container next-hop-unchanged {
                            presence
                              "Indicates a next-hop-unchanged node is configured.";
                            description
                              "Do not overwrite next hop before advertising to eBGP peers";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent next-hop-unchanged from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container next-hop-unchanged
    
                          container next-hop-unchanged-multipath {
                            presence
                              "Indicates a next-hop-unchanged-multipath node is configured.";
                            description
                              "Do not overwrite nexthop before advertising multipaths";
                          }  // container next-hop-unchanged-multipath
    
                          container slow-peer {
                            description
                              "configuration commands for slow-peer";
                            container detection {
                              description
                                "Enable or disable slow peer detection.";
                              container enable {
                                must
                                  "not(../disable) and
    (../split-update-group/static or
     ../split-update-group/dynamic)";
                                presence
                                  "Indicates a enable node is configured.";
                                description
                                  "Enable slow peer detection";
                              }  // container enable
    
                              container disable {
                                must
                                  "not(../enable) and
    (../split-update-group/static or
     ../split-update-group/dynamic)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable slow peer detection";
                              }  // container disable
    
                              container split-update-group {
                                description
                                  "Options to split update group";
                                container static {
                                  must
                                    "not(../dynamic) and (../../enable or ../../disable)";
                                  presence
                                    "Indicates a static node is configured.";
                                  description
                                    "Manually move this peer to slow update group";
                                }  // container static
    
                                container dynamic {
                                  must
                                    "not(../static) and (../../enable or ../../disable)";
                                  presence
                                    "Indicates a dynamic node is configured.";
                                  description
                                    "Move peer to slow update group on detection";
                                  container permanent {
                                    must
                                      "not(../disable)";
                                    presence
                                      "Indicates a permanent node is configured.";
                                    description
                                      "Do not revert back peer on recovery";
                                  }  // container permanent
    
                                  container disable {
                                    must
                                      "not(../permanent)";
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable moving slow peer to updgrp";
                                  }  // container disable
                                }  // container dynamic
                              }  // container split-update-group
                            }  // container detection
                          }  // container slow-peer
    
                          container origin-as {
                            description
                              "BGP origin-AS knobs";
                            container validation {
                              description
                                "BGP origin-AS validation knobs";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable RPKI origin-AS validation";
                              }  // container disable
                            }  // container validation
                          }  // container origin-as
    
                          container bestpath {
                            description
                              "Change default route selection criteria";
                            container origin-as {
                              description
                                "BGP origin-AS knobs";
                              container allow {
                                description
                                  "BGP origin-AS knobs";
                                container invalid {
                                  presence
                                    "Indicates a invalid node is configured.";
                                  description
                                    "BGP bestpath selection will allow 'invalid' origin-AS";
                                }  // container invalid
                              }  // container allow
                            }  // container origin-as
                          }  // container bestpath
    
                          container route-policy {
                            description
                              "Apply route policy";
                            leaf in {
                              type xr:Route-policy-name;
                              description
                                "Apply route policy to inbound routes";
                            }
    
                            leaf out {
                              type xr:Route-policy-name;
                              description
                                "Apply route policy to outbound routes";
                            }
                          }  // container route-policy
    
                          container orf {
                            description
                              "Specify ORF and inbound filtering criteria";
                            leaf route-policy {
                              type xr:Route-policy-name;
                              description
                                "Route policy to specify ORF and inbound filter";
                            }
                          }  // container orf
    
                          container remove-private-as {
                            presence
                              "Indicates a remove-private-as node is configured.";
                            description
                              "Remove private AS number from outbound updates";
                            container entire-aspath {
                              must
                                "not(../inheritance-disable or ../internal)";
                              presence
                                "Indicates a entire-aspath node is configured.";
                              description
                                "remove only if all ASes in the path are private";
                            }  // container entire-aspath
    
                            container inheritance-disable {
                              must
                                "not(../entire-aspath or ../internal)";
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent remove-private-AS from being inherited from the parent";
                            }  // container inheritance-disable
    
                            container internal {
                              must
                                "not(../entire-aspath or ../inheritance-disable)";
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "remove only if all ASes in the path are private";
                              container inheritance-disable {
                                presence
                                  "Indicates a inheritance-disable node is configured.";
                                description
                                  "Prevent remove-private-AS from being inherited from the parent";
                              }  // container inheritance-disable
                            }  // container internal
                          }  // container remove-private-as
    
                          container remove-private-as-inbound {
                            must
                              "not(entire-aspath and inheritance-disable)";
                            presence
                              "Indicates a inbound node is configured.";
                            description
                              "Remove private AS number from inbound updates";
                            container entire-aspath {
                              presence
                                "Indicates a entire-aspath node is configured.";
                              description
                                "remove only if all ASes in the path are private";
                            }  // container entire-aspath
    
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent remove-private-AS from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container remove-private-as-inbound
    
                          container enforce-multiple-labels {
                            presence
                              "Indicates a enforce-multiple-labels node is configured.";
                            description
                              "Enforce support for multiple labels (requires manual session flap)";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent enforce-multiple-labels from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container enforce-multiple-labels
    
                          container route-reflector-client {
                            presence
                              "Indicates a route-reflector-client node is configured.";
                            description
                              "Configure a neighbor as Route Reflector client";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent route-reflector-client from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container route-reflector-client
    
                          container accept-route-legacy-rt {
                            presence
                              "Indicates a accept-route-legacy-rt node is configured.";
                            description
                              "Configure a neighbor to support legacy PE for RT-Constraint AF";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent  accept-route-legacy-RT from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container accept-route-legacy-rt
    
                          container send-community-ebgp {
                            presence
                              "Indicates a send-community-ebgp node is configured.";
                            description
                              "Send community attribute to this external neighbor";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent send-community-ebgp from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container send-community-ebgp
    
                          container send-community-gshut-ebgp {
                            presence
                              "Indicates a send-community-gshut-ebgp node is configured.";
                            description
                              "Allow the g-shut community to be sent to this external neighbor";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent send-community-gshut-ebgp from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container send-community-gshut-ebgp
    
                          container send-extended-community-ebgp {
                            presence
                              "Indicates a send-extended-community-ebgp node is configured.";
                            description
                              "Send extended community attribute to this external neighbor";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent send-extended-community-ebgp from being inherited from parent";
                            }  // container inheritance-disable
                          }  // container send-extended-community-ebgp
    
                          container soft-reconfiguration {
                            description
                              "Per neighbor soft reconfiguration";
                            container inbound {
                              presence
                                "Indicates a inbound node is configured.";
                              description
                                "Allow inbound soft reconfiguration for this neighbor";
                              container rpki-dropped-only {
                                must
                                  "not(../rpki-tested-only or ../always or ../inheritance-disable)";
                                presence
                                  "Indicates a rpki-dropped-only node is configured.";
                                description
                                  "Use soft-reconfig, for paths dropped by route-policy which have RPKI validity state check";
                              }  // container rpki-dropped-only
    
                              container rpki-tested-only {
                                must
                                  "not(../rpki-dropped-only or ../always or ../inheritance-disable)";
                                presence
                                  "Indicates a rpki-tested-only node is configured.";
                                description
                                  "Use soft-reconfig for paths tested or dropped by route-policy which have RPKI validity state check";
                              }  // container rpki-tested-only
    
                              container always {
                                must
                                  "not(../rpki-dropped-only or ../rpki-tested-only or ../inheritance-disable)";
                                presence
                                  "Indicates a always node is configured.";
                                description
                                  "Always use soft reconfig, even if route refresh is supported";
                              }  // container always
    
                              container inheritance-disable {
                                must
                                  "not(../rpki-dropped-only or ../rpki-tested-only or ../always)";
                                presence
                                  "Indicates a inheritance-disable node is configured.";
                                description
                                  "Prevent soft-reconfiguration from being inherited from the parent";
                              }  // container inheritance-disable
                            }  // container inbound
                          }  // container soft-reconfiguration
    
                          container update {
                            description
                              "BGP out bound message";
                            container out {
                              description
                                "BGP out bound message handling";
                              container originator-loopcheck {
                                presence
                                  "Indicates a originator-loopcheck node is configured.";
                                description
                                  "Loop check for same originator which sent the route";
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable originator loop check";
                                }  // container disable
                              }  // container originator-loopcheck
                            }  // container out
                          }  // container update
    
                          container advertise {
                            description
                              "Per neighbor advertisement options";
                            container permanent-network {
                              when
                                "../../af-name != 'vpnv4-unicast' and
    ../../af-name != 'vpnv4-multicast' and
    ../../af-name != 'vpnv4-flowspec' and
    ../../af-name != 'vpnv6-flowspec' and
    ../../af-name != 'vpnv6-multicast' and
    ../../af-name != 'vpnv6-unicast' and
    ../../af-name != 'l2vpn-evpn' and
    ../../af-name != 'l2vpn-mspw' and
    ../../af-name != 'l2vpn-vpls-vpws'";
                              presence
                                "Indicates a permanent-network node is configured.";
                              description
                                "Allow permanent networks for this neighbor";
                            }  // container permanent-network
    
                            container local-labeled-route {
                              when
                                "../../af-name != 'vpnv4-unicast' and
    ../../af-name != 'vpnv4-multicast' and
    ../../af-name != 'vpnv4-flowspec' and
    ../../af-name != 'vpnv6-flowspec' and
    ../../af-name != 'vpnv6-multicast' and
    ../../af-name != 'vpnv6-unicast' and
    ../../af-name != 'l2vpn-evpn' and
    ../../af-name != 'l2vpn-mspw' and
    ../../af-name != 'l2vpn-vpls-vpws'";
                              presence
                                "Indicates a local-labeled-route node is configured.";
                              description
                                "Advertisement of routes with local-label";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Do not advertise routes with local-label via Unicast SAFI";
                              }  // container disable
                            }  // container local-labeled-route
    
                            container vpnv4 {
                              when
                                "../../af-name = 'vpnv4-unicast' or
    ../../af-name = 'vpnv6-unicast' or
    ../../af-name = 'l2vpn-evpn'";
                              description
                                "VPNv4 Address Family";
                              container unicast {
                                description
                                  "Address Family modifier";
                                container enable {
                                  presence
                                    "Indicates an enable node is configured.";
                                  description
                                    "Enable advertise vpnv4 unicast";
                                  container re-originated {
                                    presence
                                      "Indicates a re-originated node is configured.";
                                    description
                                      "Advertise re-orignated and local routes only";
                                    container stitching-rt {
                                      presence
                                        "Indicates a stitching-rt node is configured.";
                                      description
                                        "Advertise re-originated and local routes with stitching Route-Targets";
                                    }  // container stitching-rt
                                  }  // container re-originated
                                }  // container enable
    
                                container imported-from-default-vrf {
                                  description
                                    "Default VRF imported routes";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable advertisement of default VRF imported routes";
                                  }  // container disable
                                }  // container imported-from-default-vrf
    
                                container imported-from-vrf {
                                  description
                                    "VRF extranet imported routes";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable advertisement of VRF extranet imported routes";
                                  }  // container disable
                                }  // container imported-from-vrf
    
                                container imported-from-bridgedomain {
                                  description
                                    "VRF EVPN extranet imported routes ";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable advertisement of VRF EVPN extranet imported routes";
                                  }  // container disable
                                }  // container imported-from-bridgedomain
                              }  // container unicast
                            }  // container vpnv4
    
                            container vpnv6 {
                              when
                                "../../af-name = 'vpnv4-unicast' or
    ../../af-name = 'vpnv6-unicast' or
    ../../af-name = 'l2vpn-evpn'";
                              description
                                "VPNv6 Address Family";
                              container unicast {
                                description
                                  "Address Family modifier";
                                container enable {
                                  presence
                                    "Indicates an enable node is configured.";
                                  description
                                    "Enable advertise vpnv6 unicast";
                                  container re-originated {
                                    presence
                                      "Indicates a re-originated node is configured.";
                                    description
                                      "Advertise Re-orignated routes only";
                                    container stitching-rt {
                                      presence
                                        "Indicates a stitching-rt node is configured.";
                                      description
                                        "Advertise re-originated routes with stitching Route-Targets";
                                    }  // container stitching-rt
                                  }  // container re-originated
                                }  // container enable
    
                                container imported-from-default-vrf {
                                  description
                                    "Default VRF imported routes";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable advertisement of default VRF imported routes";
                                  }  // container disable
                                }  // container imported-from-default-vrf
    
                                container imported-from-vrf {
                                  description
                                    "VRF extranet imported routes";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable advertisement of VRF extranet imported routes";
                                  }  // container disable
                                }  // container imported-from-vrf
    
                                container imported-from-bridgedomain {
                                  description
                                    "VRF EVPN extranet imported routes";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable advertisement of VRF EVPN extranet imported routes";
                                  }  // container disable
                                }  // container imported-from-bridgedomain
                              }  // container unicast
                            }  // container vpnv6
    
                            container l2vpn {
                              when
                                "../../af-name = 'vpnv4-unicast' or
    ../../af-name = 'vpnv6-unicast' or
    ../../af-name = 'l2vpn-evpn'";
                              description
                                "L2VPN Address Family";
                              container evpn {
                                when
                                  "../../../af-name = 'l2vpn-evpn'";
                                presence
                                  "Indicates a evpn node is configured.";
                                description
                                  "Address Family modifier";
                                container re-originated {
                                  presence
                                    "Indicates a re-originated node is configured.";
                                  description
                                    "Advertise Re-orignated routes only";
                                  container stitching-rt {
                                    presence
                                      "Indicates a stitching-rt node is configured.";
                                    description
                                      "Advertise re-originated routes with stitching Route-Targets";
                                  }  // container stitching-rt
                                }  // container re-originated
                              }  // container evpn
    
                              container evpn-disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable Advertisement of selected SAFI";
                              }  // container evpn-disable
    
                              container vpls-vpws {
                                description
                                  "Address Family modifier";
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable Advertisement of selected SAFI";
                                }  // container disable
                              }  // container vpls-vpws
    
                              container mspw {
                                description
                                  "Address Family modifier";
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable Advertisement of selected SAFI";
                                }  // container disable
                              }  // container mspw
                            }  // container l2vpn
                          }  // container advertise
    
                          container encapsulation-type {
                            when
                              "../af-name = 'ipv4-unicast' or
    ../af-name = 'ipv6-unicast' or
    ../af-name = 'vpnv4-unicast' or
    ../af-name = 'vpnv6-unicast' or
    ../af-name = 'l2vpn-evpn'";
                            description
                              "Specify encapsulation type";
                            container vxlan {
                              when
                                "../../af-name = 'vpnv4-unicast' or
    ../../af-name = 'vpnv6-unicast' or
    ../../af-name = 'l2vpn-evpn'";
                              must
                                "not(../srv6)";
                              presence
                                "Indicates a vxlan node is configured.";
                              description
                                "VxLAN encapsulation";
                            }  // container vxlan
    
                            container srv6 {
                              when
                                "../../af-name != 'l2vpn-evpn'";
                              must
                                "not(../vxlan)";
                              presence
                                "Indicates a srv6 node is configured.";
                              description
                                "SRv6 encapsulation";
                            }  // container srv6
                          }  // container encapsulation-type
    
                          container segment-routing {
                            when
                              "../af-name = 'vpnv4-unicast'";
                            description
                              "enable segment-routing srv6 version 4";
                            container srv6 {
                              description
                                "srv6 version 4";
                              container prefix-sid-type4 {
                                presence
                                  "Indicates a prefix-sid-type4 node is configured.";
                                description
                                  "Enable prefix sid version 4 encoding";
                              }  // container prefix-sid-type4
                            }  // container srv6
                          }  // container segment-routing
    
                          container import {
                            when
                              "../af-name = 'vpnv4-unicast' or ../af-name = 'vpnv6-unicast'  or ../af-name = 'l2vpn-evpn'";
                            description
                              "Import options for neighbor address-family routes";
                            container stitching-rt {
                              presence
                                "Indicates a stitching-rt node is configured.";
                              description
                                "Import routes using stitching RTs";
                              container re-originate {
                                presence
                                  "Indicates a re-originate node is configured.";
                                description
                                  "Re-originate imported routes";
                                container stitching-rt {
                                  presence
                                    "Indicates a stitching-rt node is configured.";
                                  description
                                    "Reoriginate imported routes by attaching stitching RTs";
                                }  // container stitching-rt
                              }  // container re-originate
                            }  // container stitching-rt
                          }  // container import
    
                          leaf weight {
                            type uint32 {
                              range "0..65535";
                            }
                            description
                              "Set default weight for routes from this neighbor";
                          }
    
                          container allowas-in {
                            presence
                              "Indicates a allowas-in node is configured.";
                            description
                              "Allow as-path with my AS present in it";
                            leaf number-of-occurences {
                              type uint32 {
                                range "1..10";
                              }
                              description
                                "Number of occurences of AS number";
                            }
                          }  // container allowas-in
    
                          container long-lived-graceful-restart {
                            description
                              "Enable long lived graceful restart support";
                            container stale-time {
                              description
                                "Maximum time to wait before purging long-lived stale routes";
                              leaf send {
                                type uint32 {
                                  range
                                    "0..16777215";
                                }
                                description
                                  "Stale-time sent in LLGR Capability";
                              }
    
                              leaf accept {
                                type uint32 {
                                  range
                                    "0..16777215";
                                }
                                description
                                  "Maximum stale-time acceptable from neighbor";
                              }
                            }  // container stale-time
    
                            container capable {
                              presence
                                "Indicates a capable node is configured.";
                              description
                                "Treat neighbor as LLGR capable";
                            }  // container capable
                          }  // container long-lived-graceful-restart
    
                          container as-override {
                            presence
                              "Indicates a as-override node is configured.";
                            description
                              "Override matching AS-number while sending update";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent as-override from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container as-override
    
                          container aigp {
                            presence
                              "Indicates a aigp node is configured.";
                            description
                              "Enable AIGP for this neighbor ";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable AIGP";
                            }  // container disable
                          }  // container aigp
    
                          container aigp-send {
                            description
                              "Copy AIGP";
                            container cost-community {
                              must
                                "(cost-community-id and poi) or disable";
                              presence
                                "Indicates a cost-community node is configured.";
                              description
                                "Send AIGP value in Cost Community";
                              leaf cost-community-id {
                                type uint32 {
                                  range "0..255";
                                }
                                must
                                  "not(../disable)";
                                description
                                  "Cost community ID";
                              }
    
                              container poi {
                                must
                                  "(igp-cost or pre-bestpath) and not(igp-cost and pre-bestpath)";
                                presence
                                  "Indicates a poi node is configured.";
                                description
                                  "Point of insertion for bestpath calculation";
                                container igp-cost {
                                  presence
                                    "Indicates a igp-cost node is configured.";
                                  description
                                    "Cost community is used after IGP distance to next hop";
                                  container transitive {
                                    presence
                                      "Indicates a transitive node is configured.";
                                    description
                                      "Enable transitive cost community";
                                  }  // container transitive
                                }  // container igp-cost
    
                                container pre-bestpath {
                                  presence
                                    "Indicates a pre-bestpath node is configured.";
                                  description
                                    "Cost community is first step in best path calculation";
                                  container transitive {
                                    presence
                                      "Indicates a transitive node is configured.";
                                    description
                                      "Enable transitive cost community";
                                  }  // container transitive
                                }  // container pre-bestpath
                              }  // container poi
    
                              container disable {
                                must
                                  "not(../cost-community-id)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable aigp send cost-community";
                              }  // container disable
                            }  // container cost-community
    
                            container med {
                              presence
                                "Indicates a med node is configured.";
                              description
                                "Send AIGP value in MED";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable aigp send med";
                              }  // container disable
                            }  // container med
                          }  // container aigp-send
    
                          container validation {
                            when
                              "../af-name = 'ipv4-flowspec' or ../af-name = 'ipv6-flowspec'";
                            presence
                              "Indicates a validation node is configured.";
                            description
                              "Flowspec Validation for this neighbor ";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable Flowspec Validation";
                            }  // container disable
    
                            container redirect {
                              description
                                "Flowspec Redirect nexthop Validation";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable Flowspec Redirect nexthop Validation";
                              }  // container disable
                            }  // container redirect
                          }  // container validation
    
                          container send-multicast-attributes {
                            when
                              "../af-name = 'ipv4-unicast' or ../af-name = 'ipv6-unicast' or ../af-name = 'ipv4-labeled-unicast' or ../af-name = 'ipv6-labeled-unicast' or ../af-name = 'ipv4-multicast' or ../af-name = 'ipv6-multicast' or ../af-name = 'ipv4-mvpn' or ../af-name = 'ipv6-mvpn'";
                            presence
                              "Indicates a send-multicast-attributes node is configured.";
                            description
                              "Send multicast attributes to this neighbor ";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable send multicast attribute";
                            }  // container disable
                          }  // container send-multicast-attributes
    
                          container signalling {
                            description
                              "Signalling protocols to disable, BGP or LDP";
                            container bgp {
                              description
                                "Select BGP to disable";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable Signalling type";
                              }  // container disable
                            }  // container bgp
    
                            container ldp {
                              description
                                "Select LDP to disable";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable Signalling type";
                              }  // container disable
                            }  // container ldp
                          }  // container signalling
    
                          container accept-own {
                            presence
                              "Indicates a accept-own node is configured.";
                            description
                              "Handle self-originated routes with Accept-Own community";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent item being inherited from a parent group";
                            }  // container inheritance-disable
                          }  // container accept-own
                        }  // list address-family
                      }  // container address-families
    
                      container update {
                        description
                          "BGP Update configuration";
                        container in {
                          description
                            "Inbound update message handling";
                          container filtering {
                            presence
                              "Indicates a filtering node is configured.";
                            description
                              "Inbound update message filtering";
                            container message {
                              description
                                "Filtered update messages";
                              container buffers {
                                presence
                                  "Indicates a buffers node is configured.";
                                description
                                  "Filtered update message buffers";
                                leaf number-of-buffers {
                                  type uint32 {
                                    range
                                      "0..25";
                                  }
                                  mandatory
                                    true;
                                  description
                                    "Filtered update message buffers";
                                }
    
                                container non-circular {
                                  presence
                                    "Indicates a non-circular node is configured.";
                                  description
                                    "Message buffer list is not circular";
                                }  // container non-circular
                              }  // container buffers
                            }  // container message
    
                            container logging {
                              description
                                "Update filtering syslog message";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable update filtering syslog message";
                              }  // container disable
                            }  // container logging
    
                            container attribute-filter {
                              description
                                "Attribute-filter configuration";
                              leaf group {
                                type string {
                                  length
                                    "1..1024";
                                }
                                description
                                  "Attribute-filter group configuration";
                              }
                            }  // container attribute-filter
                          }  // container filtering
    
                          container merge {
                            description
                              "Merge incoming updates";
                            container safi {
                              description
                                "SAFI of the NLRIs to merge";
                              container unicast {
                                description
                                  "IPv4/IPv6 unicast paths";
                                container labeled-unicast {
                                  presence
                                    "Indicates a labeled-unicast node is configured.";
                                  description
                                    "IPv4/IPv6 labeled-unicast paths";
                                  container inheritance-disable {
                                    presence
                                      "Indicates a inheritance-disable node is configured.";
                                    description
                                      "Do not inherit this configuration from parent group";
                                  }  // container inheritance-disable
                                }  // container labeled-unicast
                              }  // container unicast
                            }  // container safi
                          }  // container merge
                        }  // container in
                      }  // container update
    
                      container graceful-maintenance {
                        presence
                          "Indicates a graceful-maintenance node is configured.";
                        description
                          "Attributes for Graceful Maintenance. This will cause neig dprefer routes from this router and choonas. This allows the router to be brourt of service gracefully.";
                        container local-preference {
                          must
                            "local-preference-value or inheritance-disable";
                          presence
                            "Indicates a local-preference node is configured.";
                          description
                            "local preference with which to advertise routes to ibgps. Default=No Touch";
                          leaf local-preference-value {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "Range of values for Local Preference";
                          }
    
                          container inheritance-disable {
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent local preference from being inherited from the parent";
                          }  // container inheritance-disable
                        }  // container local-preference
    
                        container as-prepends {
                          must
                            "number-of-as-prepends or inheritance-disable";
                          presence
                            "Indicates a as-prepends node is configured.";
                          description
                            "Number of times to prepend the local AS number to the AS pous. Default=0";
                          leaf number-of-as-prepends {
                            type uint32 {
                              range "0..6";
                            }
                            description
                              "Range of number of AS prepends";
                          }
    
                          container inheritance-disable {
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent AS prepends from being inherited from the parent";
                          }  // container inheritance-disable
                        }  // container as-prepends
    
                        container activate {
                          presence
                            "Indicates a activate node is configured.";
                          description
                            "Routes will be announced with the graceful maintenance
    attrhi activated either here or under router
    bgp atn. While activated, all routes to this
    neigl  announced with the attributes
    conferand all routes from this neighbor will
    be a tother neighbors with the graceful
    mainatibutes configured under those
    neighe-shut community will be announced
    regaf e other attributes configured here. To
    allosh community to be announced to ebgp
    neigheend-community-gshut-ebgp configuration
    is air. Note: changes to the attributes will
    not ecwhile activated.";
                          container inheritance-disable {
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent activate from being inherited from the parent";
                          }  // container inheritance-disable
                        }  // container activate
                      }  // container graceful-maintenance
    
                      leaf remote-as {
                        type xr:Bgp-as-number;
                        description
                          "bgp as-number";
                      }
    
                      leaf remote-as-list {
                        type string {
                          length "1..1024";
                        }
                        description
                          "Remote as-list configuration";
                      }
    
                      container use {
                        description
                          "Inherit configuration from a group";
                        leaf session-group {
                          type string {
                            length "1..1024";
                          }
                          description
                            "Inherit address-family independent config from a session-group";
                        }
    
                        leaf neighbor-group {
                          type string {
                            length "1..1024";
                          }
                          description
                            "Inherit configuration from a neighbor-group";
                        }
                      }  // container use
    
                      container advertisement-interval {
                        presence
                          "Indicates a advertisement-interval node is configured.";
                        description
                          "Minimum interval between sending BGP routing updates";
                        leaf time-in-seconds {
                          type uint32 {
                            range "0..600";
                          }
                          mandatory true;
                          description
                            "Minimum interval between sending BGP routing updates";
                        }
    
                        leaf time-in-milliseconds {
                          type uint32 {
                            range "0..999";
                          }
                          description
                            "time in milliseconds";
                        }
                      }  // container advertisement-interval
    
                      leaf description {
                        type string {
                          length "1..1024";
                        }
                        description
                          "Neighbor specific description";
                      }
    
                      container ignore-connected-check {
                        presence
                          "Indicates a ignore-connected-check node is configured.";
                        description
                          "Bypass the directly connected nexthop check for single-hop eBGP peering";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent ignore-connected-check from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container ignore-connected-check
    
                      container ebgp-multihop {
                        presence
                          "Indicates a ebgp-multihop node is configured.";
                        description
                          "Allow EBGP neighbors not on directly connected networks";
                        leaf maximum-hop-count {
                          type uint32 {
                            range "1..255";
                          }
                          mandatory true;
                          description
                            "maximum hop count";
                        }
    
                        container mpls {
                          presence
                            "Indicates a mpls node is configured.";
                          description
                            "Disable BGP MPLS forwarding";
                        }  // container mpls
                      }  // container ebgp-multihop
    
                      container tcp {
                        description
                          "TCP session configuration commands";
                        container mss {
                          must
                            "initial-mss or inheritance-disable";
                          presence
                            "Indicates a mss node is configured.";
                          description
                            "Maximum Segment Size";
                          leaf initial-mss {
                            type uint32 {
                              range "68..10000";
                            }
                            description
                              "TCP initial maximum segment size";
                          }
    
                          container inheritance-disable {
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent tcp mss from being inherited from the parent";
                          }  // container inheritance-disable
                        }  // container mss
                      }  // container tcp
    
                      container bmp-activate {
                        description
                          "Enable BMP logging for this neighbor";
                        container servers {
                          description
                            "Enable BMP connection to particular server";
                          list server {
                            key "server-id";
                            description
                              "Enable BMP connection to particular server";
                            leaf server-id {
                              type uint32 {
                                range "1..8";
                              }
                              description
                                "Enable BMP connection to particular server";
                            }
                          }  // list server
                        }  // container servers
                      }  // container bmp-activate
    
                      container bfd {
                        description
                          "Configure BFD parameters";
                        container fast-detect {
                          must
                            "not(strict-mode and inheritance-disable)";
                          presence
                            "Indicates a fast-detect node is configured.";
                          description
                            "Enable Fast detection";
                          container strict-mode {
                            presence
                              "Indicates a strict-mode node is configured.";
                            description
                              "Hold down neighbor session until BFD session is up";
                          }  // container strict-mode
    
                          container inheritance-disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Prevent bfd settings from being inherited from the parent";
                          }  // container inheritance-disable
                        }  // container fast-detect
    
                        leaf minimum-interval {
                          type uint32 {
                            range "3..30000";
                          }
                          description
                            "Hello interval";
                        }
    
                        leaf multiplier {
                          type uint32 {
                            range "2..16";
                          }
                          description
                            "Detect multiplier";
                        }
                      }  // container bfd
    
                      container keychain {
                        must
                          "name or inheritance-disable";
                        presence
                          "Indicates a keychain node is configured.";
                        description
                          "Set keychain based authentication";
                        leaf name {
                          type string {
                            length "1..32";
                          }
                          description
                            "Name of the key chain - maximum 32 characters";
                        }
    
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent keychain from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container keychain
    
                      container local-as {
                        must
                          "as-number or inheritance-disable";
                        presence
                          "Indicates a local-as node is configured.";
                        description
                          "Specify local AS number";
                        leaf as-number {
                          type xr:Bgp-as-number;
                          description
                            "bgp as-number";
                        }
    
                        container no-prepend {
                          presence
                            "Indicates a no-prepend node is configured.";
                          description
                            "Do not prepend local AS to announcements from this neighbor";
                          container replace-as {
                            presence
                              "Indicates a replace-as node is configured.";
                            description
                              "Prepend only local AS to announcements to this neighbor";
                            container dual-as {
                              presence
                                "Indicates a dual-as node is configured.";
                              description
                                "Dual-AS mode";
                            }  // container dual-as
                          }  // container replace-as
                        }  // container no-prepend
    
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent local AS from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container local-as
    
                      container password {
                        must
                          "encrypted or inheritance-disable";
                        presence
                          "Indicates a password node is configured.";
                        description
                          "Set a password";
                        leaf encrypted {
                          type xr:Proprietary-password;
                          description
                            "Specifies an ENCRYPTED password will follow";
                        }
    
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent password from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container password
    
                      container receive-buffer-size {
                        presence
                          "Indicates a receive-buffer-size node is configured.";
                        description
                          "Set socket and BGP receive buffer size";
                        leaf receive-socket-buffer-size {
                          type uint32 {
                            range "512..131072";
                          }
                          mandatory true;
                          description
                            "Set socket and BGP receive buffer size";
                        }
    
                        leaf bgp-read-buffer-size {
                          type uint32 {
                            range "512..131072";
                          }
                          description
                            "BGP Read buffer size in bytes";
                        }
                      }  // container receive-buffer-size
    
                      container send-buffer-size {
                        presence
                          "Indicates a send-buffer-size node is configured.";
                        description
                          "Set socket and BGP send buffer size";
                        leaf send-socket-buffer-size {
                          type uint32 {
                            range "4096..131072";
                          }
                          mandatory true;
                          description
                            "Set socket and BGP send buffer size";
                        }
    
                        leaf bgp-write-buffer-size {
                          type uint32 {
                            range "4096..131072";
                          }
                          description
                            "BGP Write buffer size in bytes";
                        }
                      }  // container send-buffer-size
    
                      container shutdown {
                        presence
                          "Indicates a shutdown node is configured.";
                        description
                          "Administratively shut down this neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent this neighbor being shutdown, even if its parent is";
                        }  // container inheritance-disable
                      }  // container shutdown
    
                      container timers {
                        presence
                          "Indicates a timers node is configured.";
                        description
                          "BGP per neighbor timers";
                        leaf keepalive-interval {
                          type uint32 {
                            range "0..65535";
                          }
                          mandatory true;
                          description
                            "BGP timers";
                        }
    
                        leaf holdtime {
                          type union {
                            type uint32 {
                              range "0";
                            }
                            type uint32 {
                              range "3..65535";
                            }
                          }
                          mandatory true;
                          description
                            "Holdtime. Set 0 to disable keepalives/hold time.";
                        }
    
                        leaf minimum-acceptable-holdtime {
                          type union {
                            type uint32 {
                              range "0";
                            }
                            type uint32 {
                              range "3..65535";
                            }
                          }
                          description
                            "Minimum acceptable holdtime from neighbor. Set 0 to disable keepalives/hold time.";
                        }
                      }  // container timers
    
                      container local {
                        description
                          "Configure local parameter";
                        container address {
                          must
                            "ip-address or inheritance-disable";
                          presence
                            "Indicates a address node is configured.";
                          description
                            "use configured local address for bgp peering";
                          leaf ip-address {
                            type inet:ip-address-no-zone;
                            description
                              "IPv4 address";
                          }
    
                          container inheritance-disable {
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent local address from being inherited from parent";
                          }  // container inheritance-disable
                        }  // container address
                      }  // container local
    
                      container log {
                        description
                          "Logging update messages per neighbor";
                        container message {
                          description
                            "Logging update/notification messages per neighbor";
                          container in {
                            description
                              "Inbound log messages";
                            leaf message-log-buffer-size {
                              type uint32 {
                                range "1..500";
                              }
                              description
                                "Range for message log buffer size";
                            }
    
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable inbound message logging";
                            }  // container disable
    
                            container inheritance-diable {
                              presence
                                "Indicates a inheritance-diable node is configured.";
                              description
                                "Prevents the msg log from being inherited from the parent";
                            }  // container inheritance-diable
                          }  // container in
    
                          container out {
                            description
                              "Outbound log messages";
                            leaf message-log-buffer-size {
                              type uint32 {
                                range "1..500";
                              }
                              description
                                "Range for message log buffer size";
                            }
    
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable outbound message logging";
                            }  // container disable
    
                            container inheritance-diable {
                              presence
                                "Indicates a inheritance-diable node is configured.";
                              description
                                "Prevents the msg log from being inherited from the parent";
                            }  // container inheritance-diable
                          }  // container out
                        }  // container message
                      }  // container log
    
                      leaf update-source {
                        type xr:Interface-name;
                        description
                          "Source of routing updates";
                      }
    
                      container local-address-subnet {
                        description
                          "Local address subnet of routing updates";
                        leaf ip-address {
                          type inet:ip-address-no-zone;
                          description
                            "IP address and mask length";
                        }
    
                        leaf mask-length {
                          type uint32 {
                            range "0..128";
                          }
                          description
                            "IP address and mask length";
                        }
                      }  // container local-address-subnet
    
                      container dmz-link-bandwidth {
                        presence
                          "Indicates a dmz-link-bandwidth node is configured.";
                        description
                          "Propagate the DMZ link bandwidth";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent dmz-link-bandwidth from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container dmz-link-bandwidth
    
                      container ebgp-recv-extcommunity-dmz {
                        presence
                          "Indicates a ebgp-recv-extcommunity-dmz node is configured.";
                        description
                          "Receive extcommunity dmz link bandwidth from ebgp neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent ebgp-send-community-dmz from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container ebgp-recv-extcommunity-dmz
    
                      container ebgp-send-extcommunity-dmz {
                        must
                          "not(cumulative and inheritance-disable)";
                        presence
                          "Indicates a ebgp-send-extcommunity-dmz node is configured.";
                        description
                          "Send extended community dmz link bandwidth to ebgp neighbor";
                        container cumulative {
                          presence
                            "Indicates a cumulative node is configured.";
                          description
                            "Send cumulative community dmz link bandwidth of all multipaths to ebgp neighbor";
                        }  // container cumulative
    
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent ebgp-send-extcommunity-dmz from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container ebgp-send-extcommunity-dmz
    
                      container ttl-security {
                        presence
                          "Indicates a ttl-security node is configured.";
                        description
                          "Enable EBGP TTL security";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent ttl-security from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container ttl-security
    
                      container session-open-mode {
                        description
                          "Establish BGP session using this TCP open mode";
                        container active-only {
                          must
                            "not(../passive-only or ../both)";
                          presence
                            "Indicates a active-only node is configured.";
                          description
                            "Active only";
                        }  // container active-only
    
                        container passive-only {
                          must
                            "not(../active-only or ../both)";
                          presence
                            "Indicates a passive-only node is configured.";
                          description
                            "Passive only";
                        }  // container passive-only
    
                        container both {
                          must
                            "not(../active-only or ../passive-only)";
                          presence
                            "Indicates a both node is configured.";
                          description
                            "Prevent session-open-mode being inherited from the parent";
                        }  // container both
                      }  // container session-open-mode
    
                      leaf dscp {
                        type enumeration {
                          enum "default" {
                            value 0;
                            description
                              "Set packets with default dscp (000000)";
                          }
                          enum "cs1" {
                            value 8;
                            description
                              "Set packets with CS1(precedence 1) dscp (001000)";
                          }
                          enum "af11" {
                            value 10;
                            description
                              "Set packets with AF11 dscp (001010)";
                          }
                          enum "af12" {
                            value 12;
                            description
                              "Set packets with AF12 dscp (001100)";
                          }
                          enum "af13" {
                            value 14;
                            description
                              "Set packets with AF13 dscp (001110)";
                          }
                          enum "cs2" {
                            value 16;
                            description
                              "Set packets with CS2(precedence 2) dscp (010000)";
                          }
                          enum "af21" {
                            value 18;
                            description
                              "Set packets with AF21 dscp (010010)";
                          }
                          enum "af22" {
                            value 20;
                            description
                              "Set packets with AF22 dscp (010100)";
                          }
                          enum "af23" {
                            value 22;
                            description
                              "Set packets with AF23 dscp (010110)";
                          }
                          enum "cs3" {
                            value 24;
                            description
                              "Set packets with CS3(precedence 3) dscp (011000)";
                          }
                          enum "af31" {
                            value 26;
                            description
                              "Set packets with AF31 dscp (011010)";
                          }
                          enum "af32" {
                            value 28;
                            description
                              "Set packets with AF32 dscp (011100)";
                          }
                          enum "af33" {
                            value 30;
                            description
                              "Set packets with AF33 dscp (011110)";
                          }
                          enum "cs4" {
                            value 32;
                            description
                              "Set packets with CS4(precedence 4) dscp (100000)";
                          }
                          enum "af41" {
                            value 34;
                            description
                              "Set packets with AF41 dscp (100010)";
                          }
                          enum "af42" {
                            value 36;
                            description
                              "Set packets with AF42 dscp (100100)";
                          }
                          enum "af43" {
                            value 38;
                            description
                              "Set packets with AF43 dscp (100110)";
                          }
                          enum "cs5" {
                            value 40;
                            description
                              "Set packets with CS5(precedence 5) dscp (101000)";
                          }
                          enum "ef" {
                            value 46;
                            description
                              "Set packets with EF dscp (101110)";
                          }
                          enum "cs6" {
                            value 48;
                            description
                              "Set packets with CS6(precedence 6) dscp (110000)";
                          }
                          enum "cs7" {
                            value 56;
                            description
                              "Set packets with CS7(precedence 7) dscp (111000)";
                          }
                        }
                        description
                          "Set IP DSCP (DiffServ CodePoint)";
                      }
    
                      leaf precedence {
                        type enumeration {
                          enum "routine" {
                            value 0;
                            description
                              "Set packets with routine precedence (0)";
                          }
                          enum "priority" {
                            value 1;
                            description
                              "Set packets with priority precedence (1)";
                          }
                          enum "immediate" {
                            value 2;
                            description
                              "Set packets with immediate precedence (2)";
                          }
                          enum "flash" {
                            value 3;
                            description
                              "Set packets with flash precedence (3)";
                          }
                          enum "flash-override" {
                            value 4;
                            description
                              "Set packets with flash override precedence (4)";
                          }
                          enum "critical" {
                            value 5;
                            description
                              "Set packets with critical precedence (5)";
                          }
                          enum "internet" {
                            value 6;
                            description
                              "Set packets with internetwork control precedence (6)";
                          }
                          enum "network" {
                            value 7;
                            description
                              "Set packets with network control precedence (7)";
                          }
                        }
                        description
                          "Set precedence";
                      }
    
                      container capability {
                        description
                          "Advertise capability to the peer";
                        container suppress {
                          description
                            "Suppress advertising capability to the peer ";
                          container four-byte-as {
                            presence
                              "Indicates a four-byte-as node is configured.";
                            description
                              "4-byte-as capability";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent capability suppress 4-type-as being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container four-byte-as
    
                          container all {
                            presence
                              "Indicates a all node is configured.";
                            description
                              "All capabilities";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Do not inherit this configuration from parent group";
                            }  // container inheritance-disable
                          }  // container all
    
                          container extended-nexthop-encoding {
                            presence
                              "Indicates a extended-nexthop-encoding node is configured.";
                            description
                              "Extended-nexthop-encoding capabilities (IETF RFC 5549)";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Do not inherit this configuration from parent group";
                            }  // container inheritance-disable
                          }  // container extended-nexthop-encoding
                        }  // container suppress
    
                        container additional-paths {
                          description
                            "Additional paths capability";
                          container send {
                            presence
                              "Indicates a send node is configured.";
                            description
                              "Additional paths Send capability";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Do not advertise additional paths Send capability";
                            }  // container disable
                          }  // container send
    
                          container receive {
                            presence
                              "Indicates a receive node is configured.";
                            description
                              "Additional paths Receive capability";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Do not advertise additional paths Receive capability";
                            }  // container disable
                          }  // container receive
                        }  // container additional-paths
                      }  // container capability
    
                      container graceful-restart {
                        presence
                          "Indicates a graceful-restart node is configured.";
                        description
                          "Enable graceful restart support for this neighbor";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable graceful restart support for this neighbor";
                        }  // container disable
    
                        leaf restart-time {
                          type uint32 {
                            range "1..4095";
                          }
                          description
                            "Restart time advertised to the neighbor";
                        }
    
                        leaf stalepath-time {
                          type uint32 {
                            range "1..4095";
                          }
                          description
                            "Maximum time to wait for restart of GR capable peer";
                        }
                      }  // container graceful-restart
    
                      container enforce-first-as {
                        presence
                          "Indicates a enforce-first-as node is configured.";
                        description
                          "Enforce the first AS for EBGP routes";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Do not enforce the first AS for EBGP routes";
                        }  // container disable
                      }  // container enforce-first-as
    
                      container cluster-id {
                        description
                          "Enter cluster id for this neighbor";
                        leaf route-reflector-cluster-id {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          description
                            "Route-Reflector Cluster-id as 32 bit quantity";
                        }
    
                        leaf ip-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "Route-Reflector Cluster-id in IP address format";
                        }
                      }  // container cluster-id
    
                      leaf maximum-peers {
                        type uint32 {
                          range "1..4095";
                        }
                        description
                          "Maximum dynamic neighbors";
                      }
    
                      leaf idle-watch-time {
                        type uint32 {
                          range "30..1800";
                        }
                        description
                          "Maximum time to wait for deletion of IDLE state dynamic peer";
                      }
    
                      container egress-engineering {
                        presence
                          "Indicates a egress-engineering node is configured.";
                        description
                          "Enable egress peer engineering for this neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Do not inherit egress-engineering from the parent";
                        }  // container inheritance-disable
                      }  // container egress-engineering
    
                      container peer-sets {
                        description
                          "Assign this neighbor to a peer-set used for egress peer engineering";
                        list peer-set {
                          key "peer-set-id";
                          description
                            "Assign this neighbor to a peer-set used for egress peer engineering";
                          leaf peer-set-id {
                            type uint32 {
                              range "1..255";
                            }
                            description
                              "Assign this neighbor to a peer-set used for egress peer engineering";
                          }
                        }  // list peer-set
                      }  // container peer-sets
    
                      container peer-node-sid {
                        description
                          "Assign this neighbor a manual SID for egress peer engineering";
                        leaf index {
                          type uint32 {
                            range "0..1033575";
                          }
                          description
                            "Segment Index value which is offset of SRLB";
                        }
                      }  // container peer-node-sid
    
                      container ao {
                        description
                          "Enable Authentiation Option";
                        leaf key-chain-name {
                          type string {
                            length "1..32";
                          }
                          must
                            "not(../inheritance-disable) and (../include-tcp-options/enable or ../include-tcp-options/disable)";
                          description
                            "Name of the key chain - maximum 32 characters";
                        }
    
                        container include-tcp-options {
                          description
                            "Include/Exclude other TCP options in the header";
                          container enable {
                            must
                              "not(../disable or ../../inheritance-disable)";
                            presence
                              "Indicates a enable node is configured.";
                            description
                              "Include other TCP options in the header";
                          }  // container enable
    
                          container disable {
                            must
                              "not(../enable or ../../inheritance-disable)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Exclude other TCP options in the header";
                          }  // container disable
    
                          container accept-ao-mismatch-connection {
                            must
                              "../enable or ../disable";
                            presence
                              "Indicates a accept-ao-mismatch-connection node is configured.";
                            description
                              "Accept new connection even if AO mismatched";
                          }  // container accept-ao-mismatch-connection
                        }  // container include-tcp-options
    
                        container inheritance-disable {
                          must
                            "not(../key-chain-name)";
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent keychain from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container ao
    
                      container origin-as {
                        description
                          "BGP origin-AS knobs";
                        container validation {
                          description
                            "BGP origin-AS validation knobs";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable RPKI origin-AS validation";
                          }  // container disable
                        }  // container validation
                      }  // container origin-as
    
                      container bestpath {
                        description
                          "Change default route selection criteria";
                        container origin-as {
                          description
                            "BGP origin-AS knobs";
                          container allow {
                            description
                              "BGP origin-AS knobs";
                            container invalid {
                              presence
                                "Indicates a invalid node is configured.";
                              description
                                "BGP bestpath selection will allow 'invalid' origin-AS";
                            }  // container invalid
                          }  // container allow
                        }  // container origin-as
                      }  // container bestpath
                    }  // list neighbor-range
                  }  // container neighbors
    
                  container af-groups {
                    description
                      "Specify a AF group";
                    list af-group {
                      must
                        "address-families/address-family";
                      key "af-group-name";
                      description
                        "Specify a AF group";
                      leaf af-group-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..1024";
                        }
                        description
                          "Specify a AF group";
                      }
    
                      container address-families {
                        description
                          "Enter Address Family command mode";
                        list address-family {
                          key "af-name";
                          description
                            "Enter Address Family command mode";
                          leaf af-name {
                            type Bgp-address-family;
                            description
                              "Enter Address Family command mode";
                          }
    
                          container use {
                            description
                              "Inherit configuration for this address-family from a group";
                            leaf af-group {
                              type string {
                                length "1..1024";
                              }
                              description
                                "Inherit configuration for this address-family from an af-group";
                            }
                          }  // container use
    
                          container capability {
                            description
                              "Advertise capability to the peer";
                            container orf {
                              description
                                "Advertise ORF capability to the peer";
                              container prefix {
                                description
                                  "Advertise address prefix ORF capability to this neighbor";
                                container receive {
                                  must
                                    "not(../send or ../both or ../none)";
                                  presence
                                    "Indicates a receive node is configured.";
                                  description
                                    "Capability to RECEIVE the ORF from this neighbor";
                                }  // container receive
    
                                container send {
                                  must
                                    "not(../receive or ../both or ../none)";
                                  presence
                                    "Indicates a send node is configured.";
                                  description
                                    "Capability to SEND the ORF to this neighbor";
                                }  // container send
    
                                container both {
                                  must
                                    "not(../receive or ../send or ../none)";
                                  presence
                                    "Indicates a both node is configured.";
                                  description
                                    "Capability to RECEIVE and SEND the ORF from/to this neighbor";
                                }  // container both
    
                                container none {
                                  must
                                    "not(../receive or ../send or ../both)";
                                  presence
                                    "Indicates a none node is configured.";
                                  description
                                    "No capability to RECEIVE or SEND the ORF from/to this neighbor";
                                }  // container none
                              }  // container prefix
                            }  // container orf
                          }  // container capability
    
                          container default-originate {
                            presence
                              "Indicates a default-originate node is configured.";
                            description
                              "Originate default route to this neighbor";
                            leaf route-policy {
                              type xr:Route-policy-name;
                              description
                                "Route policy to specify criteria to originate default";
                            }
    
                            container inheritance-disable {
                              must
                                "not(../route-policy)";
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent default-originate being inherited from a parent group";
                            }  // container inheritance-disable
                          }  // container default-originate
    
                          container maximum-prefix {
                            presence
                              "Indicates a maximum-prefix node is configured.";
                            description
                              "Maximum number of prefixes to accept from this peer";
                            leaf prefix-limit {
                              type uint32 {
                                range
                                  "1..4294967295";
                              }
                              mandatory true;
                              description
                                "Maximum number of prefixes to accept from this peer";
                            }
    
                            leaf threshold {
                              type uint32 {
                                range "1..100";
                              }
                              mandatory true;
                              description
                                "Threshold value (%) at which to generate a warning msg";
                            }
    
                            container warning-only {
                              presence
                                "Indicates a warning-only node is configured.";
                              description
                                "Only give warning message when limit is exceeded";
                            }  // container warning-only
    
                            leaf restart {
                              type uint32 {
                                range "1..65535";
                              }
                              description
                                "Restart time interval";
                            }
    
                            container discard-extra-paths {
                              presence
                                "Indicates a discard-extra-paths node is configured.";
                              description
                                "Discard extra paths when limit is exceeded";
                            }  // container discard-extra-paths
                          }  // container maximum-prefix
    
                          leaf optimal-route-reflection {
                            type string {
                              length "1..32";
                            }
                            description
                              "ORR group name - maximum 32 characters";
                          }
    
                          container next-hop-self {
                            presence
                              "Indicates a next-hop-self node is configured.";
                            description
                              "Disable the next hop calculation for this neighbor";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent next-hop-self from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container next-hop-self
    
                          container next-hop-unchanged {
                            presence
                              "Indicates a next-hop-unchanged node is configured.";
                            description
                              "Do not overwrite next hop before advertising to eBGP peers";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent next-hop-unchanged from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container next-hop-unchanged
    
                          container next-hop-unchanged-multipath {
                            presence
                              "Indicates a next-hop-unchanged-multipath node is configured.";
                            description
                              "Do not overwrite nexthop before advertising multipaths";
                          }  // container next-hop-unchanged-multipath
    
                          container multipath {
                            presence
                              "Indicates a multipath node is configured.";
                            description
                              "Paths from this neighbor is eligible for multipath";
                          }  // container multipath
    
                          container slow-peer {
                            description
                              "configuration commands for slow-peer";
                            container detection {
                              description
                                "Enable or disable slow peer detection.";
                              container enable {
                                must
                                  "not(../disable) and
    (../split-update-group/static or
     ../split-update-group/dynamic)";
                                presence
                                  "Indicates a enable node is configured.";
                                description
                                  "Enable slow peer detection";
                              }  // container enable
    
                              container disable {
                                must
                                  "not(../enable) and
    (../split-update-group/static or
     ../split-update-group/dynamic)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable slow peer detection";
                              }  // container disable
    
                              container split-update-group {
                                description
                                  "Options to split update group";
                                container static {
                                  must
                                    "not(../dynamic) and (../../enable or ../../disable)";
                                  presence
                                    "Indicates a static node is configured.";
                                  description
                                    "Manually move this peer to slow update group";
                                }  // container static
    
                                container dynamic {
                                  must
                                    "not(../static) and (../../enable or ../../disable)";
                                  presence
                                    "Indicates a dynamic node is configured.";
                                  description
                                    "Move peer to slow update group on detection";
                                  container permanent {
                                    must
                                      "not(../disable)";
                                    presence
                                      "Indicates a permanent node is configured.";
                                    description
                                      "Do not revert back peer on recovery";
                                  }  // container permanent
    
                                  container disable {
                                    must
                                      "not(../permanent)";
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable moving slow peer to updgrp";
                                  }  // container disable
                                }  // container dynamic
                              }  // container split-update-group
                            }  // container detection
                          }  // container slow-peer
    
                          container origin-as {
                            description
                              "BGP origin-AS knobs";
                            container validation {
                              description
                                "BGP origin-AS validation knobs";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable RPKI origin-AS validation";
                              }  // container disable
                            }  // container validation
                          }  // container origin-as
    
                          container bestpath {
                            description
                              "Change default route selection criteria";
                            container origin-as {
                              description
                                "BGP origin-AS knobs";
                              container allow {
                                description
                                  "BGP origin-AS knobs";
                                container invalid {
                                  presence
                                    "Indicates a invalid node is configured.";
                                  description
                                    "BGP bestpath selection will allow 'invalid' origin-AS";
                                }  // container invalid
                              }  // container allow
                            }  // container origin-as
                          }  // container bestpath
    
                          container route-policy {
                            leaf in {
                              type xr:Route-policy-name;
                              description
                                "Apply route policy to inbound routes";
                            }
    
                            leaf out {
                              type xr:Route-policy-name;
                              description
                                "Apply route policy to outbound routes";
                            }
                          }  // container route-policy
    
                          container orf {
                            description
                              "Specify ORF and inbound filtering criteria";
                            leaf route-policy {
                              type xr:Route-policy-name;
                              description
                                "Route policy to specify ORF and inbound filter";
                            }
                          }  // container orf
    
                          container remove-private-as {
                            presence
                              "Indicates a remove-private-as node is configured.";
                            description
                              "Remove private AS number from outbound updates";
                            container entire-aspath {
                              must
                                "not(../inheritance-disable or ../internal)";
                              presence
                                "Indicates a entire-aspath node is configured.";
                              description
                                "remove only if all ASes in the path are private";
                            }  // container entire-aspath
    
                            container inheritance-disable {
                              must
                                "not(../entire-aspath or ../internal)";
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent remove-private-AS from being inherited from the parent";
                            }  // container inheritance-disable
    
                            container internal {
                              must
                                "not(../entire-aspath or ../inheritance-disable)";
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "remove only if all ASes in the path are private";
                              container inheritance-disable {
                                presence
                                  "Indicates a inheritance-disable node is configured.";
                                description
                                  "Prevent remove-private-AS from being inherited from the parent";
                              }  // container inheritance-disable
                            }  // container internal
                          }  // container remove-private-as
    
                          container remove-private-as-inbound {
                            must
                              "not(entire-aspath and inheritance-disable)";
                            presence
                              "Indicates a inbound node is configured.";
                            description
                              "Remove private AS number from inbound updates";
                            container entire-aspath {
                              presence
                                "Indicates a entire-aspath node is configured.";
                              description
                                "remove only if all ASes in the path are private";
                            }  // container entire-aspath
    
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent remove-private-AS from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container remove-private-as-inbound
    
                          container enforce-multiple-labels {
                            presence
                              "Indicates a enforce-multiple-labels node is configured.";
                            description
                              "Enforce support for multiple labels (requires manual session flap)";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent enforce-multiple-labels from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container enforce-multiple-labels
    
                          container route-reflector-client {
                            presence
                              "Indicates a route-reflector-client node is configured.";
                            description
                              "Configure a neighbor as Route Reflector client";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent route-reflector-client from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container route-reflector-client
    
                          container accept-route-legacy-rt {
                            presence
                              "Indicates a accept-route-legacy-rt node is configured.";
                            description
                              "Configure a neighbor to support legacy PE for RT-Constraint AF";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent  accept-route-legacy-RT from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container accept-route-legacy-rt
    
                          container send-community-ebgp {
                            presence
                              "Indicates a send-community-ebgp node is configured.";
                            description
                              "Send community attribute to this external neighbor";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent send-community-ebgp from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container send-community-ebgp
    
                          container send-community-gshut-ebgp {
                            presence
                              "Indicates a send-community-gshut-ebgp node is configured.";
                            description
                              "Allow the g-shut community to be sent to this external neighbor";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent send-community-gshut-ebgp from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container send-community-gshut-ebgp
    
                          container send-extended-community-ebgp {
                            presence
                              "Indicates a send-extended-community-ebgp node is configured.";
                            description
                              "Send extended community attribute to this external neighbor";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent send-extended-community-ebgp from being inherited from parent";
                            }  // container inheritance-disable
                          }  // container send-extended-community-ebgp
    
                          container soft-reconfiguration {
                            description
                              "Per neighbor soft reconfiguration";
                            container inbound {
                              presence
                                "Indicates a inbound node is configured.";
                              description
                                "Allow inbound soft reconfiguration for this neighbor";
                              container rpki-dropped-only {
                                must
                                  "not(../rpki-tested-only or ../always or ../inheritance-disable)";
                                presence
                                  "Indicates a rpki-dropped-only node is configured.";
                                description
                                  "Use soft-reconfig, for paths dropped by route-policy which have RPKI validity state check";
                              }  // container rpki-dropped-only
    
                              container rpki-tested-only {
                                must
                                  "not(../rpki-dropped-only or ../always or ../inheritance-disable)";
                                presence
                                  "Indicates a rpki-tested-only node is configured.";
                                description
                                  "Use soft-reconfig for paths tested or dropped by route-policy which have RPKI validity state check";
                              }  // container rpki-tested-only
    
                              container always {
                                must
                                  "not(../rpki-dropped-only or ../rpki-tested-only or ../inheritance-disable)";
                                presence
                                  "Indicates a always node is configured.";
                                description
                                  "Always use soft reconfig, even if route refresh is supported";
                              }  // container always
    
                              container inheritance-disable {
                                must
                                  "not(../rpki-dropped-only or ../rpki-tested-only or ../always)";
                                presence
                                  "Indicates a inheritance-disable node is configured.";
                                description
                                  "Prevent soft-reconfiguration from being inherited from the parent";
                              }  // container inheritance-disable
                            }  // container inbound
                          }  // container soft-reconfiguration
    
                          container update {
                            description
                              "BGP out bound message";
                            container out {
                              description
                                "BGP out bound message handling";
                              container originator-loopcheck {
                                presence
                                  "Indicates a originator-loopcheck node is configured.";
                                description
                                  "Loop check for same originator which sent the route";
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable originator loop check";
                                }  // container disable
                              }  // container originator-loopcheck
                            }  // container out
                          }  // container update
    
                          container advertise {
                            description
                              "Per neighbor advertisement options";
                            container permanent-network {
                              when
                                "../../af-name != 'vpnv4-unicast' and
    ../../af-name != 'vpnv4-multicast' and
    ../../af-name != 'vpnv4-flowspec' and
    ../../af-name != 'vpnv6-flowspec' and
    ../../af-name != 'vpnv6-multicast' and
    ../../af-name != 'vpnv6-unicast' and
    ../../af-name != 'l2vpn-evpn' and
    ../../af-name != 'l2vpn-mspw' and
    ../../af-name != 'l2vpn-vpls-vpws'";
                              presence
                                "Indicates a permanent-network node is configured.";
                              description
                                "Allow permanent networks for this neighbor";
                            }  // container permanent-network
    
                            container local-labeled-route {
                              when
                                "../../af-name != 'vpnv4-unicast' and
    ../../af-name != 'vpnv4-multicast' and
    ../../af-name != 'vpnv4-flowspec' and
    ../../af-name != 'vpnv6-flowspec' and
    ../../af-name != 'vpnv6-multicast' and
    ../../af-name != 'vpnv6-unicast' and
    ../../af-name != 'l2vpn-evpn' and
    ../../af-name != 'l2vpn-mspw' and
    ../../af-name != 'l2vpn-vpls-vpws'";
                              presence
                                "Indicates a local-labeled-route node is configured.";
                              description
                                "Advertisement of routes with local-label";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Do not advertise routes with local-label via Unicast SAFI";
                              }  // container disable
                            }  // container local-labeled-route
    
                            container vpnv4 {
                              when
                                "../../af-name = 'vpnv4-unicast' or
    ../../af-name = 'vpnv6-unicast' or
    ../../af-name = 'l2vpn-evpn'";
                              description
                                "VPNv4 Address Family";
                              container unicast {
                                description
                                  "Address Family modifier";
                                container enable {
                                  presence
                                    "Indicates an enable node is configured.";
                                  description
                                    "Enable advertise vpnv4 unicast";
                                  container re-originated {
                                    presence
                                      "Indicates a re-originated node is configured.";
                                    description
                                      "Advertise re-orignated and local routes only";
                                    container stitching-rt {
                                      presence
                                        "Indicates a stitching-rt node is configured.";
                                      description
                                        "Advertise re-originated and local routes with stitching Route-Targets";
                                    }  // container stitching-rt
                                  }  // container re-originated
                                }  // container enable
    
                                container imported-from-default-vrf {
                                  description
                                    "Default VRF imported routes";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable advertisement of default VRF imported routes";
                                  }  // container disable
                                }  // container imported-from-default-vrf
    
                                container imported-from-vrf {
                                  description
                                    "VRF extranet imported routes";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable advertisement of VRF extranet imported routes";
                                  }  // container disable
                                }  // container imported-from-vrf
    
                                container imported-from-bridgedomain {
                                  description
                                    "VRF EVPN extranet imported routes ";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable advertisement of VRF EVPN extranet imported routes";
                                  }  // container disable
                                }  // container imported-from-bridgedomain
                              }  // container unicast
                            }  // container vpnv4
    
                            container vpnv6 {
                              when
                                "../../af-name = 'vpnv4-unicast' or
    ../../af-name = 'vpnv6-unicast' or
    ../../af-name = 'l2vpn-evpn'";
                              description
                                "VPNv6 Address Family";
                              container unicast {
                                description
                                  "Address Family modifier";
                                container enable {
                                  presence
                                    "Indicates an enable node is configured.";
                                  description
                                    "Enable advertise vpnv6 unicast";
                                  container re-originated {
                                    presence
                                      "Indicates a re-originated node is configured.";
                                    description
                                      "Advertise Re-orignated routes only";
                                    container stitching-rt {
                                      presence
                                        "Indicates a stitching-rt node is configured.";
                                      description
                                        "Advertise re-originated routes with stitching Route-Targets";
                                    }  // container stitching-rt
                                  }  // container re-originated
                                }  // container enable
    
                                container imported-from-default-vrf {
                                  description
                                    "Default VRF imported routes";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable advertisement of default VRF imported routes";
                                  }  // container disable
                                }  // container imported-from-default-vrf
    
                                container imported-from-vrf {
                                  description
                                    "VRF extranet imported routes";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable advertisement of VRF extranet imported routes";
                                  }  // container disable
                                }  // container imported-from-vrf
    
                                container imported-from-bridgedomain {
                                  description
                                    "VRF EVPN extranet imported routes";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable advertisement of VRF EVPN extranet imported routes";
                                  }  // container disable
                                }  // container imported-from-bridgedomain
                              }  // container unicast
                            }  // container vpnv6
    
                            container l2vpn {
                              when
                                "../../af-name = 'vpnv4-unicast' or
    ../../af-name = 'vpnv6-unicast' or
    ../../af-name = 'l2vpn-evpn'";
                              description
                                "L2VPN Address Family";
                              container evpn {
                                when
                                  "../../../af-name = 'l2vpn-evpn'";
                                presence
                                  "Indicates a evpn node is configured.";
                                description
                                  "Address Family modifier";
                                container re-originated {
                                  presence
                                    "Indicates a re-originated node is configured.";
                                  description
                                    "Advertise Re-orignated routes only";
                                  container stitching-rt {
                                    presence
                                      "Indicates a stitching-rt node is configured.";
                                    description
                                      "Advertise re-originated routes with stitching Route-Targets";
                                  }  // container stitching-rt
                                }  // container re-originated
                              }  // container evpn
    
                              container evpn-disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable Advertisement of selected SAFI";
                              }  // container evpn-disable
    
                              container vpls-vpws {
                                description
                                  "Address Family modifier";
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable Advertisement of selected SAFI";
                                }  // container disable
                              }  // container vpls-vpws
    
                              container mspw {
                                description
                                  "Address Family modifier";
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable Advertisement of selected SAFI";
                                }  // container disable
                              }  // container mspw
                            }  // container l2vpn
                          }  // container advertise
    
                          container encapsulation-type {
                            when
                              "../af-name = 'ipv4-unicast' or
    ../af-name = 'ipv6-unicast' or
    ../af-name = 'vpnv4-unicast' or
    ../af-name = 'vpnv6-unicast' or
    ../af-name = 'l2vpn-evpn'";
                            description
                              "Specify encapsulation type";
                            container vxlan {
                              when
                                "../../af-name = 'vpnv4-unicast' or
    ../../af-name = 'vpnv6-unicast' or
    ../../af-name = 'l2vpn-evpn'";
                              must
                                "not(../srv6)";
                              presence
                                "Indicates a vxlan node is configured.";
                              description
                                "VxLAN encapsulation";
                            }  // container vxlan
    
                            container srv6 {
                              when
                                "../../af-name != 'l2vpn-evpn'";
                              must
                                "not(../vxlan)";
                              presence
                                "Indicates a srv6 node is configured.";
                              description
                                "SRv6 encapsulation";
                            }  // container srv6
                          }  // container encapsulation-type
    
                          container segment-routing {
                            when
                              "../af-name = 'vpnv4-unicast'";
                            description
                              "enable segment-routing srv6 version 4";
                            container srv6 {
                              description
                                "srv6 version 4";
                              container prefix-sid-type4 {
                                presence
                                  "Indicates a prefix-sid-type4 node is configured.";
                                description
                                  "Enable prefix sid version 4 encoding";
                              }  // container prefix-sid-type4
                            }  // container srv6
                          }  // container segment-routing
    
                          container import {
                            when
                              "../af-name = 'vpnv4-unicast' or ../af-name = 'vpnv6-unicast'  or ../af-name = 'l2vpn-evpn'";
                            description
                              "Import options for neighbor address-family routes";
                            container stitching-rt {
                              presence
                                "Indicates a stitching-rt node is configured.";
                              description
                                "Import routes using stitching RTs";
                              container re-originate {
                                presence
                                  "Indicates a re-originate node is configured.";
                                description
                                  "Re-originate imported routes";
                                container stitching-rt {
                                  presence
                                    "Indicates a stitching-rt node is configured.";
                                  description
                                    "Reoriginate imported routes by attaching stitching RTs";
                                }  // container stitching-rt
                              }  // container re-originate
                            }  // container stitching-rt
                          }  // container import
    
                          leaf weight {
                            type uint32 {
                              range "0..65535";
                            }
                            description
                              "Set default weight for routes from this neighbor";
                          }
    
                          container allowas-in {
                            presence
                              "Indicates a allowas-in node is configured.";
                            description
                              "Allow as-path with my AS present in it";
                            leaf number-of-occurences {
                              type uint32 {
                                range "1..10";
                              }
                              description
                                "Number of occurences of AS number";
                            }
                          }  // container allowas-in
    
                          container long-lived-graceful-restart {
                            description
                              "Enable long lived graceful restart support";
                            container stale-time {
                              description
                                "Maximum time to wait before purging long-lived stale routes";
                              leaf send {
                                type uint32 {
                                  range
                                    "0..16777215";
                                }
                                description
                                  "Stale-time sent in LLGR Capability";
                              }
    
                              leaf accept {
                                type uint32 {
                                  range
                                    "0..16777215";
                                }
                                description
                                  "Maximum stale-time acceptable from neighbor";
                              }
                            }  // container stale-time
    
                            container capable {
                              presence
                                "Indicates a capable node is configured.";
                              description
                                "Treat neighbor as LLGR capable";
                            }  // container capable
                          }  // container long-lived-graceful-restart
    
                          container as-override {
                            presence
                              "Indicates a as-override node is configured.";
                            description
                              "Override matching AS-number while sending update";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent as-override from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container as-override
    
                          container aigp {
                            presence
                              "Indicates a aigp node is configured.";
                            description
                              "Enable AIGP for this neighbor ";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable AIGP";
                            }  // container disable
                          }  // container aigp
    
                          container aigp-send {
                            description
                              "Copy AIGP";
                            container cost-community {
                              must
                                "(cost-community-id and poi) or disable";
                              presence
                                "Indicates a cost-community node is configured.";
                              description
                                "Send AIGP value in Cost Community";
                              leaf cost-community-id {
                                type uint32 {
                                  range "0..255";
                                }
                                must
                                  "not(../disable)";
                                description
                                  "Cost community ID";
                              }
    
                              container poi {
                                must
                                  "(igp-cost or pre-bestpath) and not(igp-cost and pre-bestpath)";
                                presence
                                  "Indicates a poi node is configured.";
                                description
                                  "Point of insertion for bestpath calculation";
                                container igp-cost {
                                  presence
                                    "Indicates a igp-cost node is configured.";
                                  description
                                    "Cost community is used after IGP distance to next hop";
                                  container transitive {
                                    presence
                                      "Indicates a transitive node is configured.";
                                    description
                                      "Enable transitive cost community";
                                  }  // container transitive
                                }  // container igp-cost
    
                                container pre-bestpath {
                                  presence
                                    "Indicates a pre-bestpath node is configured.";
                                  description
                                    "Cost community is first step in best path calculation";
                                  container transitive {
                                    presence
                                      "Indicates a transitive node is configured.";
                                    description
                                      "Enable transitive cost community";
                                  }  // container transitive
                                }  // container pre-bestpath
                              }  // container poi
    
                              container disable {
                                must
                                  "not(../cost-community-id)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable aigp send cost-community";
                              }  // container disable
                            }  // container cost-community
    
                            container med {
                              presence
                                "Indicates a med node is configured.";
                              description
                                "Send AIGP value in MED";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable aigp send med";
                              }  // container disable
                            }  // container med
                          }  // container aigp-send
    
                          container validation {
                            when
                              "../af-name = 'ipv4-flowspec' or ../af-name = 'ipv6-flowspec'";
                            presence
                              "Indicates a validation node is configured.";
                            description
                              "Flowspec Validation for this neighbor ";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable Flowspec Validation";
                            }  // container disable
    
                            container redirect {
                              description
                                "Flowspec Redirect nexthop Validation";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable Flowspec Redirect nexthop Validation";
                              }  // container disable
                            }  // container redirect
                          }  // container validation
    
                          container send-multicast-attributes {
                            when
                              "../af-name = 'ipv4-unicast' or ../af-name = 'ipv6-unicast' or ../af-name = 'ipv4-labeled-unicast' or ../af-name = 'ipv6-labeled-unicast' or ../af-name = 'ipv4-multicast' or ../af-name = 'ipv6-multicast' or ../af-name = 'ipv4-mvpn' or ../af-name = 'ipv6-mvpn'";
                            presence
                              "Indicates a send-multicast-attributes node is configured.";
                            description
                              "Send multicast attributes to this neighbor ";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable send multicast attribute";
                            }  // container disable
                          }  // container send-multicast-attributes
    
                          container signalling {
                            description
                              "Signalling protocols to disable, BGP or LDP";
                            container bgp {
                              description
                                "Select BGP to disable";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable Signalling type";
                              }  // container disable
                            }  // container bgp
    
                            container ldp {
                              description
                                "Select LDP to disable";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable Signalling type";
                              }  // container disable
                            }  // container ldp
                          }  // container signalling
    
                          container accept-own {
                            presence
                              "Indicates a accept-own node is configured.";
                            description
                              "Handle self-originated routes with Accept-Own community";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent item being inherited from a parent group";
                            }  // container inheritance-disable
                          }  // container accept-own
    
                          container cluster-id {
                            description
                              "Allow routes with first cluster-id in list is same as the router's cluster id";
                            container allow-equal {
                              presence
                                "Indicates a allow-equal node is configured.";
                              description
                                "Accept routes with first cluster-id in list is same as the router's cluster id";
                              container disable {
                                presence
                                  "Indicates a allow-equal node is configured.";
                                description
                                  "Prevent the configuration from being inherited.";
                              }  // container disable
                            }  // container allow-equal
                          }  // container cluster-id
    
                          container site-of-origin {
                            description
                              "Site-of-Origin extended community associated with the neighbor";
                            container two-byte-as {
                              must
                                "not(../four-byte-as or ../ip-address)";
                              presence
                                "Indicates a two-byte-as node is configured.";
                              leaf as-number {
                                type xr:Bgp-as-number;
                                mandatory true;
                                description
                                  "bgp as-number";
                              }
    
                              leaf index {
                                type uint32 {
                                  range
                                    "0..4294967295";
                                }
                                mandatory true;
                                description
                                  "ASN2:index (hex or decimal format)";
                              }
                            }  // container two-byte-as
    
                            container four-byte-as {
                              must
                                "not(../two-byte-as or ../ip-address)";
                              presence
                                "Indicates a four-byte-as node is configured.";
                              leaf as-number {
                                type xr:Bgp-as-number;
                                mandatory true;
                                description
                                  "4-byte AS number";
                              }
    
                              leaf index {
                                type uint32 {
                                  range
                                    "0..4294967295";
                                }
                                mandatory true;
                                description
                                  "ASN2:index (hex or decimal format)";
                              }
                            }  // container four-byte-as
    
                            container ip-address {
                              must
                                "not(../two-byte-as or ../four-byte-as)";
                              presence
                                "Indicates a ip-address node is configured.";
                              description
                                "configure this node";
                              leaf ipv4-address {
                                type inet:ipv4-address-no-zone;
                                mandatory true;
                                description
                                  "configure this node";
                              }
    
                              leaf index {
                                type uint32 {
                                  range
                                    "0..65535";
                                }
                                mandatory true;
                                description
                                  "IPv4Address:index (hex or decimal format)";
                              }
                            }  // container ip-address
                          }  // container site-of-origin
                        }  // list address-family
                      }  // container address-families
                    }  // list af-group
                  }  // container af-groups
    
                  container session-groups {
                    description
                      "Specify a Session group";
                    list session-group {
                      key "session-group-name";
                      description
                        "Specify a Session group";
                      leaf session-group-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..1024";
                        }
                        description
                          "Specify a Session group";
                      }
    
                      leaf remote-as {
                        type xr:Bgp-as-number;
                        description
                          "bgp as-number";
                      }
    
                      leaf remote-as-list {
                        type string {
                          length "1..1024";
                        }
                        description
                          "Remote as-list configuration";
                      }
    
                      container use {
                        description
                          "Inherit configuration from a group";
                        leaf session-group {
                          type string {
                            length "1..1024";
                          }
                          description
                            "Inherit address-family independent config from a session-group";
                        }
                      }  // container use
    
                      container advertisement-interval {
                        presence
                          "Indicates a advertisement-interval node is configured.";
                        description
                          "Minimum interval between sending BGP routing updates";
                        leaf time-in-seconds {
                          type uint32 {
                            range "0..600";
                          }
                          mandatory true;
                          description
                            "Minimum interval between sending BGP routing updates";
                        }
    
                        leaf time-in-milliseconds {
                          type uint32 {
                            range "0..999";
                          }
                          description
                            "time in milliseconds";
                        }
                      }  // container advertisement-interval
    
                      leaf description {
                        type string {
                          length "1..1024";
                        }
                        description
                          "Neighbor specific description";
                      }
    
                      container ignore-connected-check {
                        presence
                          "Indicates a ignore-connected-check node is configured.";
                        description
                          "Bypass the directly connected nexthop check for single-hop eBGP peering";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent ignore-connected-check from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container ignore-connected-check
    
                      container internal-vpn-client {
                        presence
                          "Indicates a internal-vpn-client node is configured.";
                        description
                          "Preserve iBGP CE neighbor path in ATTR_SET across VPN core";
                      }  // container internal-vpn-client
    
                      container ebgp-multihop {
                        presence
                          "Indicates a ebgp-multihop node is configured.";
                        description
                          "Allow EBGP neighbors not on directly connected networks";
                        leaf maximum-hop-count {
                          type uint32 {
                            range "1..255";
                          }
                          mandatory true;
                          description
                            "maximum hop count";
                        }
    
                        container mpls {
                          presence
                            "Indicates a mpls node is configured.";
                          description
                            "Disable BGP MPLS forwarding";
                        }  // container mpls
                      }  // container ebgp-multihop
    
                      container tcp {
                        description
                          "TCP session configuration commands";
                        container mss {
                          must
                            "initial-mss or inheritance-disable";
                          presence
                            "Indicates a mss node is configured.";
                          description
                            "Maximum Segment Size";
                          leaf initial-mss {
                            type uint32 {
                              range "68..10000";
                            }
                            description
                              "TCP initial maximum segment size";
                          }
    
                          container inheritance-disable {
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent tcp mss from being inherited from the parent";
                          }  // container inheritance-disable
                        }  // container mss
                      }  // container tcp
    
                      container bmp-activate {
                        description
                          "Enable BMP logging for this neighbor";
                        container servers {
                          description
                            "Enable BMP connection to particular server";
                          list server {
                            key "server-id";
                            description
                              "Enable BMP connection to particular server";
                            leaf server-id {
                              type uint32 {
                                range "1..8";
                              }
                              description
                                "Enable BMP connection to particular server";
                            }
                          }  // list server
                        }  // container servers
                      }  // container bmp-activate
    
                      container bfd {
                        description
                          "Configure BFD parameters";
                        container fast-detect {
                          presence
                            "Indicates a fast-detect node is configured.";
                          description
                            "Enable Fast detection";
                          container strict-mode {
                            presence
                              "Indicates a strict-mode node is configured.";
                            description
                              "Hold down neighbor session until BFD session is up";
                          }  // container strict-mode
    
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Prevent bfd settings from being inherited from the parent";
                          }  // container disable
                        }  // container fast-detect
    
                        leaf minimum-interval {
                          type uint32 {
                            range "3..30000";
                          }
                          description
                            "Hello interval";
                        }
    
                        leaf multiplier {
                          type uint32 {
                            range "2..16";
                          }
                          description
                            "Detect multiplier";
                        }
                      }  // container bfd
    
                      container keychain {
                        must
                          "name or inheritance-disable";
                        presence
                          "Indicates a keychain node is configured.";
                        description
                          "Set keychain based authentication";
                        leaf name {
                          type string {
                            length "1..32";
                          }
                          description
                            "Name of the key chain - maximum 32 characters";
                        }
    
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent keychain from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container keychain
    
                      container local-as {
                        must
                          "as-number or inheritance-disable";
                        presence
                          "Indicates a local-as node is configured.";
                        description
                          "Specify local AS number";
                        leaf as-number {
                          type xr:Bgp-as-number;
                          description
                            "bgp as-number";
                        }
    
                        container no-prepend {
                          presence
                            "Indicates a no-prepend node is configured.";
                          description
                            "Do not prepend local AS to announcements from this neighbor";
                          container replace-as {
                            presence
                              "Indicates a replace-as node is configured.";
                            description
                              "Prepend only local AS to announcements to this neighbor";
                            container dual-as {
                              presence
                                "Indicates a dual-as node is configured.";
                              description
                                "Dual-AS mode";
                            }  // container dual-as
                          }  // container replace-as
                        }  // container no-prepend
    
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent local AS from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container local-as
    
                      container password {
                        must
                          "encrypted or inheritance-disable";
                        presence
                          "Indicates a password node is configured.";
                        description
                          "Set a password";
                        leaf encrypted {
                          type xr:Proprietary-password;
                          description
                            "Specifies an ENCRYPTED password will follow";
                        }
    
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent password from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container password
    
                      container receive-buffer-size {
                        presence
                          "Indicates a receive-buffer-size node is configured.";
                        description
                          "Set socket and BGP receive buffer size";
                        leaf receive-socket-buffer-size {
                          type uint32 {
                            range "512..131072";
                          }
                          mandatory true;
                          description
                            "Set socket and BGP receive buffer size";
                        }
    
                        leaf bgp-read-buffer-size {
                          type uint32 {
                            range "512..131072";
                          }
                          description
                            "BGP Read buffer size in bytes";
                        }
                      }  // container receive-buffer-size
    
                      container send-buffer-size {
                        presence
                          "Indicates a send-buffer-size node is configured.";
                        description
                          "Set socket and BGP send buffer size";
                        leaf send-socket-buffer-size {
                          type uint32 {
                            range "4096..131072";
                          }
                          mandatory true;
                          description
                            "Set socket and BGP send buffer size";
                        }
    
                        leaf bgp-write-buffer-size {
                          type uint32 {
                            range "4096..131072";
                          }
                          description
                            "BGP Write buffer size in bytes";
                        }
                      }  // container send-buffer-size
    
                      container shutdown {
                        presence
                          "Indicates a shutdown node is configured.";
                        description
                          "Administratively shut down this neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent this neighbor being shutdown, even if its parent is";
                        }  // container inheritance-disable
                      }  // container shutdown
    
                      container timers {
                        presence
                          "Indicates a timers node is configured.";
                        description
                          "BGP per neighbor timers";
                        leaf keepalive-interval {
                          type uint32 {
                            range "0..65535";
                          }
                          mandatory true;
                          description
                            "BGP timers";
                        }
    
                        leaf holdtime {
                          type union {
                            type uint32 {
                              range "0";
                            }
                            type uint32 {
                              range "3..65535";
                            }
                          }
                          mandatory true;
                          description
                            "Holdtime. Set 0 to disable keepalives/hold time.";
                        }
    
                        leaf minimum-acceptable-holdtime {
                          type union {
                            type uint32 {
                              range "0";
                            }
                            type uint32 {
                              range "3..65535";
                            }
                          }
                          description
                            "Minimum acceptable holdtime from neighbor. Set 0 to disable keepalives/hold time.";
                        }
                      }  // container timers
    
                      container local {
                        description
                          "Configure local parameter";
                        container address {
                          must
                            "ip-address or inheritance-disable";
                          presence
                            "Indicates a address node is configured.";
                          description
                            "use configured local address for bgp peering";
                          leaf ip-address {
                            type inet:ip-address-no-zone;
                            description
                              "IPv4 address";
                          }
    
                          container inheritance-disable {
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent local address from being inherited from parent";
                          }  // container inheritance-disable
                        }  // container address
                      }  // container local
    
                      container log {
                        description
                          "Logging update messages per neighbor";
                        container message {
                          description
                            "Logging update/notification messages per neighbor";
                          container in {
                            description
                              "Inbound log messages";
                            leaf message-log-buffer-size {
                              type uint32 {
                                range "1..500";
                              }
                              description
                                "Range for message log buffer size";
                            }
    
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable inbound message logging";
                            }  // container disable
    
                            container inheritance-diable {
                              presence
                                "Indicates a inheritance-diable node is configured.";
                              description
                                "Prevents the msg log from being inherited from the parent";
                            }  // container inheritance-diable
                          }  // container in
    
                          container out {
                            description
                              "Outbound log messages";
                            leaf message-log-buffer-size {
                              type uint32 {
                                range "1..500";
                              }
                              description
                                "Range for message log buffer size";
                            }
    
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable outbound message logging";
                            }  // container disable
    
                            container inheritance-diable {
                              presence
                                "Indicates a inheritance-diable node is configured.";
                              description
                                "Prevents the msg log from being inherited from the parent";
                            }  // container inheritance-diable
                          }  // container out
                        }  // container message
                      }  // container log
    
                      leaf update-source {
                        type xr:Interface-name;
                        description
                          "Source of routing updates";
                      }
    
                      container local-address-subnet {
                        description
                          "Local address subnet of routing updates";
                        leaf ip-address {
                          type inet:ip-address-no-zone;
                          description
                            "IPv6 address and mask or masklength";
                        }
    
                        leaf mask-length {
                          type uint32 {
                            range "0..128";
                          }
                          description
                            "IP address and mask length";
                        }
                      }  // container local-address-subnet
    
                      container dmz-link-bandwidth {
                        presence
                          "Indicates a dmz-link-bandwidth node is configured.";
                        description
                          "Propagate the DMZ link bandwidth";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent dmz-link-bandwidth from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container dmz-link-bandwidth
    
                      container ebgp-recv-extcommunity-dmz {
                        presence
                          "Indicates a ebgp-recv-extcommunity-dmz node is configured.";
                        description
                          "Receive extcommunity dmz link bandwidth from ebgp neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent ebgp-send-community-dmz from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container ebgp-recv-extcommunity-dmz
    
                      container ebgp-send-extcommunity-dmz {
                        must
                          "not(cumulative and inheritance-disable)";
                        presence
                          "Indicates a ebgp-send-extcommunity-dmz node is configured.";
                        description
                          "Send extended community dmz link bandwidth to ebgp neighbor";
                        container cumulative {
                          presence
                            "Indicates a cumulative node is configured.";
                          description
                            "Send cumulative community dmz link bandwidth of all multipaths to ebgp neighbor";
                        }  // container cumulative
    
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent ebgp-send-extcommunity-dmz from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container ebgp-send-extcommunity-dmz
    
                      container ttl-security {
                        presence
                          "Indicates a ttl-security node is configured.";
                        description
                          "Enable EBGP TTL security";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent ttl-security from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container ttl-security
    
                      container session-open-mode {
                        description
                          "Establish BGP session using this TCP open mode";
                        container active-only {
                          must
                            "not(../passive-only or ../both)";
                          presence
                            "Indicates a active-only node is configured.";
                          description
                            "Active only";
                        }  // container active-only
    
                        container passive-only {
                          must
                            "not(../active-only or ../both)";
                          presence
                            "Indicates a passive-only node is configured.";
                          description
                            "Passive only";
                        }  // container passive-only
    
                        container both {
                          must
                            "not(../active-only or ../passive-only)";
                          presence
                            "Indicates a both node is configured.";
                          description
                            "Prevent session-open-mode being inherited from the parent";
                        }  // container both
                      }  // container session-open-mode
    
                      leaf dscp {
                        type enumeration {
                          enum "default" {
                            value 0;
                            description
                              "Set packets with default dscp (000000)";
                          }
                          enum "cs1" {
                            value 8;
                            description
                              "Set packets with CS1(precedence 1) dscp (001000)";
                          }
                          enum "af11" {
                            value 10;
                            description
                              "Set packets with AF11 dscp (001010)";
                          }
                          enum "af12" {
                            value 12;
                            description
                              "Set packets with AF12 dscp (001100)";
                          }
                          enum "af13" {
                            value 14;
                            description
                              "Set packets with AF13 dscp (001110)";
                          }
                          enum "cs2" {
                            value 16;
                            description
                              "Set packets with CS2(precedence 2) dscp (010000)";
                          }
                          enum "af21" {
                            value 18;
                            description
                              "Set packets with AF21 dscp (010010)";
                          }
                          enum "af22" {
                            value 20;
                            description
                              "Set packets with AF22 dscp (010100)";
                          }
                          enum "af23" {
                            value 22;
                            description
                              "Set packets with AF23 dscp (010110)";
                          }
                          enum "cs3" {
                            value 24;
                            description
                              "Set packets with CS3(precedence 3) dscp (011000)";
                          }
                          enum "af31" {
                            value 26;
                            description
                              "Set packets with AF31 dscp (011010)";
                          }
                          enum "af32" {
                            value 28;
                            description
                              "Set packets with AF32 dscp (011100)";
                          }
                          enum "af33" {
                            value 30;
                            description
                              "Set packets with AF33 dscp (011110)";
                          }
                          enum "cs4" {
                            value 32;
                            description
                              "Set packets with CS4(precedence 4) dscp (100000)";
                          }
                          enum "af41" {
                            value 34;
                            description
                              "Set packets with AF41 dscp (100010)";
                          }
                          enum "af42" {
                            value 36;
                            description
                              "Set packets with AF42 dscp (100100)";
                          }
                          enum "af43" {
                            value 38;
                            description
                              "Set packets with AF43 dscp (100110)";
                          }
                          enum "cs5" {
                            value 40;
                            description
                              "Set packets with CS5(precedence 5) dscp (101000)";
                          }
                          enum "ef" {
                            value 46;
                            description
                              "Set packets with EF dscp (101110)";
                          }
                          enum "cs6" {
                            value 48;
                            description
                              "Set packets with CS6(precedence 6) dscp (110000)";
                          }
                          enum "cs7" {
                            value 56;
                            description
                              "Set packets with CS7(precedence 7) dscp (111000)";
                          }
                        }
                        description
                          "Set IP DSCP (DiffServ CodePoint)";
                      }
    
                      leaf precedence {
                        type enumeration {
                          enum "routine" {
                            value 0;
                            description
                              "Set packets with routine precedence (0)";
                          }
                          enum "priority" {
                            value 1;
                            description
                              "Set packets with priority precedence (1)";
                          }
                          enum "immediate" {
                            value 2;
                            description
                              "Set packets with immediate precedence (2)";
                          }
                          enum "flash" {
                            value 3;
                            description
                              "Set packets with flash precedence (3)";
                          }
                          enum "flash-override" {
                            value 4;
                            description
                              "Set packets with flash override precedence (4)";
                          }
                          enum "critical" {
                            value 5;
                            description
                              "Set packets with critical precedence (5)";
                          }
                          enum "internet" {
                            value 6;
                            description
                              "Set packets with internetwork control precedence (6)";
                          }
                          enum "network" {
                            value 7;
                            description
                              "Set packets with network control precedence (7)";
                          }
                        }
                        description
                          "Set precedence";
                      }
    
                      container capability {
                        description
                          "Advertise capability to the peer";
                        container suppress {
                          description
                            "Suppress advertising capability to the peer ";
                          container four-byte-as {
                            presence
                              "Indicates a four-byte-as node is configured.";
                            description
                              "4-byte-as capability";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent capability suppress 4-type-as being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container four-byte-as
    
                          container all {
                            presence
                              "Indicates a all node is configured.";
                            description
                              "All capabilities";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Do not inherit this configuration from parent group";
                            }  // container inheritance-disable
                          }  // container all
    
                          container extended-nexthop-encoding {
                            presence
                              "Indicates a extended-nexthop-encoding node is configured.";
                            description
                              "Extended-nexthop-encoding capabilities (IETF RFC 5549)";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Do not inherit this configuration from parent group";
                            }  // container inheritance-disable
                          }  // container extended-nexthop-encoding
                        }  // container suppress
    
                        container additional-paths {
                          description
                            "Additional paths capability";
                          container send {
                            presence
                              "Indicates a send node is configured.";
                            description
                              "Additional paths Send capability";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Do not advertise additional paths Send capability";
                            }  // container disable
                          }  // container send
    
                          container receive {
                            presence
                              "Indicates a receive node is configured.";
                            description
                              "Additional paths Receive capability";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Do not advertise additional paths Receive capability";
                            }  // container disable
                          }  // container receive
                        }  // container additional-paths
                      }  // container capability
    
                      container graceful-restart {
                        presence
                          "Indicates a graceful-restart node is configured.";
                        description
                          "Enable graceful restart support for this neighbor";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable graceful restart support for this neighbor";
                        }  // container disable
    
                        leaf restart-time {
                          type uint32 {
                            range "1..4095";
                          }
                          description
                            "Restart time advertised to the neighbor";
                        }
    
                        leaf stalepath-time {
                          type uint32 {
                            range "1..4095";
                          }
                          description
                            "Maximum time to wait for restart of GR capable peer";
                        }
                      }  // container graceful-restart
    
                      container enforce-first-as {
                        presence
                          "Indicates a enforce-first-as node is configured.";
                        description
                          "Enforce the first AS for EBGP routes";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Do not enforce the first AS for EBGP routes";
                        }  // container disable
                      }  // container enforce-first-as
    
                      container cluster-id {
                        description
                          "Enter cluster id for this neighbor";
                        leaf route-reflector-cluster-id {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          description
                            "Route-Reflector Cluster-id as 32 bit quantity";
                        }
    
                        leaf ip-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "Route-Reflector Cluster-id in IP address format";
                        }
                      }  // container cluster-id
    
                      leaf maximum-peers {
                        type uint32 {
                          range "1..4095";
                        }
                        description
                          "Maximum dynamic neighbors";
                      }
    
                      leaf idle-watch-time {
                        type uint32 {
                          range "30..1800";
                        }
                        description
                          "Maximum time to wait for deletion of IDLE state dynamic peer";
                      }
    
                      container egress-engineering {
                        presence
                          "Indicates a egress-engineering node is configured.";
                        description
                          "Enable egress peer engineering for this neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Do not inherit egress-engineering from the parent";
                        }  // container inheritance-disable
                      }  // container egress-engineering
    
                      container peer-sets {
                        description
                          "Assign this neighbor to a peer-set used for egress peer engineering";
                        list peer-set {
                          key "peer-set-id";
                          description
                            "Assign this neighbor to a peer-set used for egress peer engineering";
                          leaf peer-set-id {
                            type uint32 {
                              range "1..255";
                            }
                            description
                              "Assign this neighbor to a peer-set used for egress peer engineering";
                          }
                        }  // list peer-set
                      }  // container peer-sets
    
                      container ao {
                        description
                          "Enable Authentiation Option";
                        leaf key-chain-name {
                          type string {
                            length "1..32";
                          }
                          must
                            "not(../inheritance-disable) and (../include-tcp-options/enable or ../include-tcp-options/disable)";
                          description
                            "Name of the key chain - maximum 32 characters";
                        }
    
                        container include-tcp-options {
                          description
                            "Include/Exclude other TCP options in the header";
                          container enable {
                            must
                              "not(../disable or ../../inheritance-disable)";
                            presence
                              "Indicates a enable node is configured.";
                            description
                              "Include other TCP options in the header";
                          }  // container enable
    
                          container disable {
                            must
                              "not(../enable or ../../inheritance-disable)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Exclude other TCP options in the header";
                          }  // container disable
    
                          container accept-ao-mismatch-connection {
                            must
                              "../enable or ../disable";
                            presence
                              "Indicates a accept-ao-mismatch-connection node is configured.";
                            description
                              "Accept new connection even if AO mismatched";
                          }  // container accept-ao-mismatch-connection
                        }  // container include-tcp-options
    
                        container inheritance-disable {
                          must
                            "not(../key-chain-name)";
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent keychain from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container ao
                    }  // list session-group
                  }  // container session-groups
    
                  container neighbor-groups {
                    description
                      "Specify a Neighbor-group";
                    list neighbor-group {
                      key "neighbor-group-name";
                      description
                        "Specify a Neighbor-group";
                      leaf neighbor-group-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..900";
                        }
                        description
                          "Specify a Neighbor-group";
                      }
    
                      container address-families {
                        description
                          "Enter Address Family command mode";
                        list address-family {
                          key "af-name";
                          description
                            "Enter Address Family command mode";
                          leaf af-name {
                            type Bgp-address-family;
                            description
                              "Enter Address Family command mode";
                          }
    
                          container multipath {
                            presence
                              "Indicates a multipath node is configured.";
                            description
                              "Paths from this neighbor is eligible for multipath";
                          }  // container multipath
    
                          container use {
                            description
                              "Inherit configuration for this address-family from a group";
                            leaf af-group {
                              type string {
                                length "1..1024";
                              }
                              description
                                "Inherit configuration for this address-family from an af-group";
                            }
                          }  // container use
    
                          container capability {
                            description
                              "Advertise capability to the peer";
                            container orf {
                              description
                                "Advertise ORF capability to the peer";
                              container prefix {
                                description
                                  "Advertise address prefix ORF capability to this neighbor";
                                container receive {
                                  must
                                    "not(../send or ../both or ../none)";
                                  presence
                                    "Indicates a receive node is configured.";
                                  description
                                    "Capability to RECEIVE the ORF from this neighbor";
                                }  // container receive
    
                                container send {
                                  must
                                    "not(../receive or ../both or ../none)";
                                  presence
                                    "Indicates a send node is configured.";
                                  description
                                    "Capability to SEND the ORF to this neighbor";
                                }  // container send
    
                                container both {
                                  must
                                    "not(../receive or ../send or ../none)";
                                  presence
                                    "Indicates a both node is configured.";
                                  description
                                    "Capability to RECEIVE and SEND the ORF from/to this neighbor";
                                }  // container both
    
                                container none {
                                  must
                                    "not(../receive or ../send or ../both)";
                                  presence
                                    "Indicates a none node is configured.";
                                  description
                                    "No capability to RECEIVE or SEND the ORF from/to this neighbor";
                                }  // container none
                              }  // container prefix
                            }  // container orf
                          }  // container capability
    
                          container default-originate {
                            presence
                              "Indicates a default-originate node is configured.";
                            description
                              "Originate default route to this neighbor";
                            leaf route-policy {
                              type xr:Route-policy-name;
                              description
                                "Route policy to specify criteria to originate default";
                            }
    
                            container inheritance-disable {
                              must
                                "not(../route-policy)";
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent default-originate being inherited from a parent group";
                            }  // container inheritance-disable
                          }  // container default-originate
    
                          container maximum-prefix {
                            presence
                              "Indicates a maximum-prefix node is configured.";
                            description
                              "Maximum number of prefixes to accept from this peer";
                            leaf prefix-limit {
                              type uint32 {
                                range
                                  "1..4294967295";
                              }
                              mandatory true;
                              description
                                "Maximum number of prefixes to accept from this peer";
                            }
    
                            leaf threshold {
                              type uint32 {
                                range "1..100";
                              }
                              mandatory true;
                              description
                                "Threshold value (%) at which to generate a warning msg";
                            }
    
                            container warning-only {
                              presence
                                "Indicates a warning-only node is configured.";
                              description
                                "Only give warning message when limit is exceeded";
                            }  // container warning-only
    
                            leaf restart {
                              type uint32 {
                                range "1..65535";
                              }
                              description
                                "Restart time interval";
                            }
    
                            container discard-extra-paths {
                              presence
                                "Indicates a discard-extra-paths node is configured.";
                              description
                                "Discard extra paths when limit is exceeded";
                            }  // container discard-extra-paths
                          }  // container maximum-prefix
    
                          leaf optimal-route-reflection {
                            type string {
                              length "1..32";
                            }
                            description
                              "Configure optiomal-route-reflection for this neighbor";
                          }
    
                          container next-hop-self {
                            presence
                              "Indicates a next-hop-self node is configured.";
                            description
                              "Disable the next hop calculation for this neighbor";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent next-hop-self from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container next-hop-self
    
                          container next-hop-unchanged {
                            presence
                              "Indicates a next-hop-unchanged node is configured.";
                            description
                              "Do not overwrite next hop before advertising to eBGP peers";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent next-hop-unchanged from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container next-hop-unchanged
    
                          container next-hop-unchanged-multipath {
                            presence
                              "Indicates a next-hop-unchanged-multipath node is configured.";
                            description
                              "Do not overwrite nexthop before advertising multipaths";
                          }  // container next-hop-unchanged-multipath
    
                          container slow-peer {
                            description
                              "configuration commands for slow-peer";
                            container detection {
                              description
                                "Enable or disable slow peer detection.";
                              container enable {
                                must
                                  "not(../disable) and
    (../split-update-group/static or
     ../split-update-group/dynamic)";
                                presence
                                  "Indicates a enable node is configured.";
                                description
                                  "Enable slow peer detection";
                              }  // container enable
    
                              container disable {
                                must
                                  "not(../enable) and
    (../split-update-group/static or
     ../split-update-group/dynamic)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable slow peer detection";
                              }  // container disable
    
                              container split-update-group {
                                description
                                  "Options to split update group";
                                container static {
                                  must
                                    "not(../dynamic) and (../../enable or ../../disable)";
                                  presence
                                    "Indicates a static node is configured.";
                                  description
                                    "Manually move this peer to slow update group";
                                }  // container static
    
                                container dynamic {
                                  must
                                    "not(../static) and (../../enable or ../../disable)";
                                  presence
                                    "Indicates a dynamic node is configured.";
                                  description
                                    "Move peer to slow update group on detection";
                                  container permanent {
                                    must
                                      "not(../disable)";
                                    presence
                                      "Indicates a permanent node is configured.";
                                    description
                                      "Do not revert back peer on recovery";
                                  }  // container permanent
    
                                  container disable {
                                    must
                                      "not(../permanent)";
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable moving slow peer to updgrp";
                                  }  // container disable
                                }  // container dynamic
                              }  // container split-update-group
                            }  // container detection
                          }  // container slow-peer
    
                          container origin-as {
                            description
                              "BGP origin-AS knobs";
                            container validation {
                              description
                                "BGP origin-AS validation knobs";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable RPKI origin-AS validation";
                              }  // container disable
                            }  // container validation
                          }  // container origin-as
    
                          container bestpath {
                            description
                              "Change default route selection criteria";
                            container origin-as {
                              description
                                "BGP origin-AS knobs";
                              container allow {
                                description
                                  "BGP origin-AS knobs";
                                container invalid {
                                  presence
                                    "Indicates a invalid node is configured.";
                                  description
                                    "BGP bestpath selection will allow 'invalid' origin-AS";
                                }  // container invalid
                              }  // container allow
                            }  // container origin-as
                          }  // container bestpath
    
                          container route-policy {
                            description
                              "Apply route policy to neighbor";
                            leaf in {
                              type xr:Route-policy-name;
                              description
                                "Apply route policy to inbound routes";
                            }
    
                            leaf out {
                              type xr:Route-policy-name;
                              description
                                "Apply route policy to outbound routes";
                            }
                          }  // container route-policy
    
                          container orf {
                            description
                              "Specify ORF and inbound filtering criteria";
                            leaf route-policy {
                              type xr:Route-policy-name;
                              description
                                "Route policy to specify ORF and inbound filter";
                            }
                          }  // container orf
    
                          container remove-private-as {
                            presence
                              "Indicates a remove-private-as node is configured.";
                            description
                              "Remove private AS number from outbound updates";
                            container entire-aspath {
                              must
                                "not(../inheritance-disable or ../internal)";
                              presence
                                "Indicates a entire-aspath node is configured.";
                              description
                                "remove only if all ASes in the path are private";
                            }  // container entire-aspath
    
                            container inheritance-disable {
                              must
                                "not(../entire-aspath or ../internal)";
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent remove-private-AS from being inherited from the parent";
                            }  // container inheritance-disable
    
                            container internal {
                              must
                                "not(../entire-aspath or ../inheritance-disable)";
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "remove only if all ASes in the path are private";
                              container inheritance-disable {
                                presence
                                  "Indicates a inheritance-disable node is configured.";
                                description
                                  "Prevent remove-private-AS from being inherited from the parent";
                              }  // container inheritance-disable
                            }  // container internal
                          }  // container remove-private-as
    
                          container remove-private-as-inbound {
                            must
                              "not(entire-aspath and inheritance-disable)";
                            presence
                              "Indicates a inbound node is configured.";
                            description
                              "Remove private AS number from inbound updates";
                            container entire-aspath {
                              presence
                                "Indicates a entire-aspath node is configured.";
                              description
                                "remove only if all ASes in the path are private";
                            }  // container entire-aspath
    
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent remove-private-AS from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container remove-private-as-inbound
    
                          container enforce-multiple-labels {
                            presence
                              "Indicates a enforce-multiple-labels node is configured.";
                            description
                              "Enforce support for multiple labels (requires manual session flap)";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent enforce-multiple-labels from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container enforce-multiple-labels
    
                          container route-reflector-client {
                            presence
                              "Indicates a route-reflector-client node is configured.";
                            description
                              "Configure a neighbor as Route Reflector client";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent route-reflector-client from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container route-reflector-client
    
                          container accept-route-legacy-rt {
                            presence
                              "Indicates a accept-route-legacy-rt node is configured.";
                            description
                              "Configure a neighbor to support legacy PE for RT-Constraint AF";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent  accept-route-legacy-RT from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container accept-route-legacy-rt
    
                          container send-community-ebgp {
                            presence
                              "Indicates a send-community-ebgp node is configured.";
                            description
                              "Send community attribute to this external neighbor";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent send-community-ebgp from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container send-community-ebgp
    
                          container send-community-gshut-ebgp {
                            presence
                              "Indicates a send-community-gshut-ebgp node is configured.";
                            description
                              "Allow the g-shut community to be sent to this external neighbor";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent send-community-gshut-ebgp from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container send-community-gshut-ebgp
    
                          container send-extended-community-ebgp {
                            presence
                              "Indicates a send-extended-community-ebgp node is configured.";
                            description
                              "Send extended community attribute to this external neighbor";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent send-extended-community-ebgp from being inherited from parent";
                            }  // container inheritance-disable
                          }  // container send-extended-community-ebgp
    
                          container soft-reconfiguration {
                            description
                              "Per neighbor soft reconfiguration";
                            container inbound {
                              presence
                                "Indicates a inbound node is configured.";
                              description
                                "Allow inbound soft reconfiguration for this neighbor";
                              container rpki-dropped-only {
                                must
                                  "not(../rpki-tested-only or ../always or ../inheritance-disable)";
                                presence
                                  "Indicates a rpki-dropped-only node is configured.";
                                description
                                  "Use soft-reconfig, for paths dropped by route-policy which have RPKI validity state check";
                              }  // container rpki-dropped-only
    
                              container rpki-tested-only {
                                must
                                  "not(../rpki-dropped-only or ../always or ../inheritance-disable)";
                                presence
                                  "Indicates a rpki-tested-only node is configured.";
                                description
                                  "Use soft-reconfig for paths tested or dropped by route-policy which have RPKI validity state check";
                              }  // container rpki-tested-only
    
                              container always {
                                must
                                  "not(../rpki-dropped-only or ../rpki-tested-only or ../inheritance-disable)";
                                presence
                                  "Indicates a always node is configured.";
                                description
                                  "Always use soft reconfig, even if route refresh is supported";
                              }  // container always
    
                              container inheritance-disable {
                                must
                                  "not(../rpki-dropped-only or ../rpki-tested-only or ../always)";
                                presence
                                  "Indicates a inheritance-disable node is configured.";
                                description
                                  "Prevent soft-reconfiguration from being inherited from the parent";
                              }  // container inheritance-disable
                            }  // container inbound
                          }  // container soft-reconfiguration
    
                          container update {
                            description
                              "BGP out bound message";
                            container out {
                              description
                                "BGP out bound message handling";
                              container originator-loopcheck {
                                presence
                                  "Indicates a originator-loopcheck node is configured.";
                                description
                                  "Loop check for same originator which sent the route";
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable originator loop check";
                                }  // container disable
                              }  // container originator-loopcheck
                            }  // container out
                          }  // container update
    
                          container advertise {
                            description
                              "Per neighbor advertisement options";
                            container permanent-network {
                              when
                                "../../af-name != 'vpnv4-unicast' and
    ../../af-name != 'vpnv4-multicast' and
    ../../af-name != 'vpnv4-flowspec' and
    ../../af-name != 'vpnv6-flowspec' and
    ../../af-name != 'vpnv6-multicast' and
    ../../af-name != 'vpnv6-unicast' and
    ../../af-name != 'l2vpn-evpn' and
    ../../af-name != 'l2vpn-mspw' and
    ../../af-name != 'l2vpn-vpls-vpws'";
                              presence
                                "Indicates a permanent-network node is configured.";
                              description
                                "Allow permanent networks for this neighbor";
                            }  // container permanent-network
    
                            container local-labeled-route {
                              when
                                "../../af-name != 'vpnv4-unicast' and
    ../../af-name != 'vpnv4-multicast' and
    ../../af-name != 'vpnv4-flowspec' and
    ../../af-name != 'vpnv6-flowspec' and
    ../../af-name != 'vpnv6-multicast' and
    ../../af-name != 'vpnv6-unicast' and
    ../../af-name != 'l2vpn-evpn' and
    ../../af-name != 'l2vpn-mspw' and
    ../../af-name != 'l2vpn-vpls-vpws'";
                              presence
                                "Indicates a local-labeled-route node is configured.";
                              description
                                "Advertisement of routes with local-label";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Do not advertise routes with local-label via Unicast SAFI";
                              }  // container disable
                            }  // container local-labeled-route
    
                            container vpnv4 {
                              when
                                "../../af-name = 'vpnv4-unicast' or
    ../../af-name = 'vpnv6-unicast' or
    ../../af-name = 'l2vpn-evpn'";
                              description
                                "VPNv4 Address Family";
                              container unicast {
                                description
                                  "Address Family modifier";
                                container enable {
                                  presence
                                    "Indicates an enable node is configured.";
                                  description
                                    "Enable advertise vpn4 unicast";
                                  container re-originated {
                                    presence
                                      "Indicates a re-originated node is configured.";
                                    description
                                      "Advertise re-orignated and local routes only";
                                    container stitching-rt {
                                      presence
                                        "Indicates a stitching-rt node is configured.";
                                      description
                                        "Advertise re-originated and local routes with stitching Route-Targets";
                                    }  // container stitching-rt
                                  }  // container re-originated
                                }  // container enable
    
                                container imported-from-default-vrf {
                                  description
                                    "Default VRF imported routes";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable advertisement of default VRF imported routes";
                                  }  // container disable
                                }  // container imported-from-default-vrf
    
                                container imported-from-vrf {
                                  description
                                    "VRF extranet imported routes";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable advertisement of VRF extranet imported routes";
                                  }  // container disable
                                }  // container imported-from-vrf
    
                                container imported-from-bridgedomain {
                                  description
                                    "VRF EVPN extranet imported routes ";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable advertisement of VRF EVPN extranet imported routes";
                                  }  // container disable
                                }  // container imported-from-bridgedomain
                              }  // container unicast
                            }  // container vpnv4
    
                            container vpnv6 {
                              when
                                "../../af-name = 'vpnv4-unicast' or
    ../../af-name = 'vpnv6-unicast' or
    ../../af-name = 'l2vpn-evpn'";
                              description
                                "VPNv6 Address Family";
                              container unicast {
                                description
                                  "Address Family modifier";
                                container enable {
                                  presence
                                    "Indicates an enable node is configured.";
                                  description
                                    "Enable advertise vpnv6 unicast";
                                  container re-originated {
                                    presence
                                      "Indicates a re-originated node is configured.";
                                    description
                                      "Advertise Re-orignated routes only";
                                    container stitching-rt {
                                      presence
                                        "Indicates a stitching-rt node is configured.";
                                      description
                                        "Advertise re-originated routes with stitching Route-Targets";
                                    }  // container stitching-rt
                                  }  // container re-originated
                                }  // container enable
    
                                container imported-from-default-vrf {
                                  description
                                    "Default VRF imported routes";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable advertisement of default VRF imported routes";
                                  }  // container disable
                                }  // container imported-from-default-vrf
    
                                container imported-from-vrf {
                                  description
                                    "VRF extranet imported routes";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable advertisement of VRF extranet imported routes";
                                  }  // container disable
                                }  // container imported-from-vrf
    
                                container imported-from-bridgedomain {
                                  description
                                    "VRF EVPN extranet imported routes";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable advertisement of VRF EVPN extranet imported routes";
                                  }  // container disable
                                }  // container imported-from-bridgedomain
                              }  // container unicast
                            }  // container vpnv6
    
                            container l2vpn {
                              when
                                "../../af-name = 'vpnv4-unicast' or
    ../../af-name = 'vpnv6-unicast' or
    ../../af-name = 'l2vpn-evpn'";
                              description
                                "L2VPN Address Family";
                              container evpn {
                                when
                                  "../../../af-name = 'l2vpn-evpn'";
                                presence
                                  "Indicates a evpn node is configured.";
                                description
                                  "Address Family modifier";
                                container re-originated {
                                  presence
                                    "Indicates a re-originated node is configured.";
                                  description
                                    "Advertise Re-orignated routes only";
                                  container stitching-rt {
                                    presence
                                      "Indicates a stitching-rt node is configured.";
                                    description
                                      "Advertise re-originated routes with stitching Route-Targets";
                                  }  // container stitching-rt
                                }  // container re-originated
                              }  // container evpn
    
                              container evpn-disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable Advertisement of selected SAFI";
                              }  // container evpn-disable
    
                              container vpls-vpws {
                                description
                                  "Address Family modifier";
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable Advertisement of selected SAFI";
                                }  // container disable
                              }  // container vpls-vpws
    
                              container mspw {
                                description
                                  "Address Family modifier";
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable Advertisement of selected SAFI";
                                }  // container disable
                              }  // container mspw
                            }  // container l2vpn
                          }  // container advertise
    
                          container encapsulation-type {
                            when
                              "../af-name = 'ipv4-unicast' or
    ../af-name = 'ipv6-unicast' or
    ../af-name = 'vpnv4-unicast' or
    ../af-name = 'vpnv6-unicast' or
    ../af-name = 'l2vpn-evpn'";
                            description
                              "Specify encapsulation type";
                            container vxlan {
                              when
                                "../../af-name = 'vpnv4-unicast' or
    ../../af-name = 'vpnv6-unicast' or
    ../../af-name = 'l2vpn-evpn'";
                              must
                                "not(../srv6)";
                              presence
                                "Indicates a vxlan node is configured.";
                              description
                                "VxLAN encapsulation";
                            }  // container vxlan
    
                            container srv6 {
                              when
                                "../../af-name != 'l2vpn-evpn'";
                              must
                                "not(../vxlan)";
                              presence
                                "Indicates a srv6 node is configured.";
                              description
                                "SRv6 encapsulation";
                            }  // container srv6
                          }  // container encapsulation-type
    
                          container segment-routing {
                            when
                              "../af-name = 'vpnv4-unicast'";
                            description
                              "enable segment-routing srv6 version 4";
                            container srv6 {
                              description
                                "srv6 version 4";
                              container prefix-sid-type4 {
                                presence
                                  "Indicates a prefix-sid-type4 node is configured.";
                                description
                                  "Enable prefix sid version 4 encoding";
                              }  // container prefix-sid-type4
                            }  // container srv6
                          }  // container segment-routing
    
                          container import {
                            description
                              "Import options for neighbor address-family routes";
                            container stitching-rt {
                              presence
                                "Indicates a stitching-rt node is configured.";
                              description
                                "Import routes using stitching RTs";
                              container re-originate {
                                presence
                                  "Indicates a re-originate node is configured.";
                                description
                                  "Re-originate imported routes";
                                container stitching-rt {
                                  presence
                                    "Indicates a stitching-rt node is configured.";
                                  description
                                    "Reoriginate imported routes by attaching stitching RTs";
                                }  // container stitching-rt
                              }  // container re-originate
                            }  // container stitching-rt
                          }  // container import
    
                          leaf weight {
                            type uint32 {
                              range "0..65535";
                            }
                            description
                              "Set default weight for routes from this neighbor";
                          }
    
                          container allowas-in {
                            presence
                              "Indicates a allowas-in node is configured.";
                            description
                              "Allow as-path with my AS present in it";
                            leaf number-of-occurences {
                              type uint32 {
                                range "1..10";
                              }
                              description
                                "Number of occurences of AS number";
                            }
                          }  // container allowas-in
    
                          container long-lived-graceful-restart {
                            description
                              "Enable long lived graceful restart support";
                            container stale-time {
                              description
                                "Maximum time to wait before purging long-lived stale routes";
                              leaf send {
                                type uint32 {
                                  range
                                    "0..16777215";
                                }
                                description
                                  "Stale-time sent in LLGR Capability";
                              }
    
                              leaf accept {
                                type uint32 {
                                  range
                                    "0..16777215";
                                }
                                description
                                  "Maximum stale-time acceptable from neighbor";
                              }
                            }  // container stale-time
    
                            container capable {
                              presence
                                "Indicates a capable node is configured.";
                              description
                                "Treat neighbor as LLGR capable";
                            }  // container capable
                          }  // container long-lived-graceful-restart
    
                          container as-override {
                            presence
                              "Indicates a as-override node is configured.";
                            description
                              "Override matching AS-number while sending update";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent as-override from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container as-override
    
                          container aigp {
                            presence
                              "Indicates a aigp node is configured.";
                            description
                              "Enable AIGP for this neighbor ";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable AIGP";
                            }  // container disable
                          }  // container aigp
    
                          container aigp-send {
                            description
                              "Copy AIGP";
                            container cost-community {
                              must
                                "(cost-community-id and poi) or disable";
                              presence
                                "Indicates a cost-community node is configured.";
                              description
                                "Send AIGP value in Cost Community";
                              leaf cost-community-id {
                                type uint32 {
                                  range "0..255";
                                }
                                must
                                  "not(../disable)";
                                description
                                  "Cost community ID";
                              }
    
                              container poi {
                                must
                                  "(igp-cost or pre-bestpath) and not(igp-cost and pre-bestpath)";
                                presence
                                  "Indicates a poi node is configured.";
                                description
                                  "Point of insertion for bestpath calculation";
                                container igp-cost {
                                  presence
                                    "Indicates a igp-cost node is configured.";
                                  description
                                    "Cost community is used after IGP distance to next hop";
                                  container transitive {
                                    presence
                                      "Indicates a transitive node is configured.";
                                    description
                                      "Enable transitive cost community";
                                  }  // container transitive
                                }  // container igp-cost
    
                                container pre-bestpath {
                                  presence
                                    "Indicates a pre-bestpath node is configured.";
                                  description
                                    "Cost community is first step in best path calculation";
                                  container transitive {
                                    presence
                                      "Indicates a transitive node is configured.";
                                    description
                                      "Enable transitive cost community";
                                  }  // container transitive
                                }  // container pre-bestpath
                              }  // container poi
    
                              container disable {
                                must
                                  "not(../cost-community-id)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable aigp send cost-community";
                              }  // container disable
                            }  // container cost-community
    
                            container med {
                              presence
                                "Indicates a med node is configured.";
                              description
                                "Send AIGP value in MED";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable aigp send med";
                              }  // container disable
                            }  // container med
                          }  // container aigp-send
    
                          container validation {
                            when
                              "../af-name = 'ipv4-flowspec' or ../af-name = 'ipv6-flowspec'";
                            presence
                              "Indicates a validation node is configured.";
                            description
                              "Flowspec Validation for this neighbor ";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable Flowspec Validation";
                            }  // container disable
    
                            container redirect {
                              description
                                "Flowspec Redirect nexthop Validation";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable Flowspec Redirect nexthop Validation";
                              }  // container disable
                            }  // container redirect
                          }  // container validation
    
                          container send-multicast-attributes {
                            when
                              "../af-name = 'ipv4-unicast' or ../af-name = 'ipv6-unicast' or ../af-name = 'ipv4-labeled-unicast' or ../af-name = 'ipv6-labeled-unicast' or ../af-name = 'ipv4-multicast' or ../af-name = 'ipv6-multicast' or ../af-name = 'ipv4-mvpn' or ../af-name = 'ipv6-mvpn'";
                            presence
                              "Indicates a send-multicast-attributes node is configured.";
                            description
                              "Send multicast attributes to this neighbor ";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable send multicast attribute";
                            }  // container disable
                          }  // container send-multicast-attributes
    
                          container signalling {
                            description
                              "Signalling protocols to disable, BGP or LDP";
                            container bgp {
                              description
                                "Select BGP to disable";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable Signalling type";
                              }  // container disable
                            }  // container bgp
    
                            container ldp {
                              description
                                "Select LDP to disable";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable Signalling type";
                              }  // container disable
                            }  // container ldp
                          }  // container signalling
    
                          container accept-own {
                            presence
                              "Indicates a accept-own node is configured.";
                            description
                              "Handle self-originated routes with Accept-Own community";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent item being inherited from a parent group";
                            }  // container inheritance-disable
                          }  // container accept-own
    
                          container cluster-id {
                            description
                              "Allow routes with first cluster-id in list is same as the router's cluster id";
                            container allow-equal {
                              presence
                                "Indicates a allow-equal node is configured.";
                              description
                                "Accept routes with first cluster-id in list is same as the router's cluster id";
                              container disable {
                                presence
                                  "Indicates a allow-equal node is configured.";
                                description
                                  "Prevent the configuration from being inherited.";
                              }  // container disable
                            }  // container allow-equal
                          }  // container cluster-id
    
                          container site-of-origin {
                            description
                              "Site-of-Origin extended community associated with the neighbor";
                            container two-byte-as {
                              must
                                "not(../four-byte-as or ../ip-address)";
                              presence
                                "Indicates a two-byte-as node is configured.";
                              leaf as-number {
                                type xr:Bgp-as-number;
                                mandatory true;
                                description
                                  "bgp as-number";
                              }
    
                              leaf index {
                                type uint32 {
                                  range
                                    "0..4294967295";
                                }
                                mandatory true;
                                description
                                  "ASN2:index (hex or decimal format)";
                              }
                            }  // container two-byte-as
    
                            container four-byte-as {
                              must
                                "not(../two-byte-as or ../ip-address)";
                              presence
                                "Indicates a four-byte-as node is configured.";
                              leaf as-number {
                                type xr:Bgp-as-number;
                                mandatory true;
                                description
                                  "4-byte AS number";
                              }
    
                              leaf index {
                                type uint32 {
                                  range
                                    "0..4294967295";
                                }
                                mandatory true;
                                description
                                  "ASN2:index (hex or decimal format)";
                              }
                            }  // container four-byte-as
    
                            container ip-address {
                              must
                                "not(../two-byte-as or ../four-byte-as)";
                              presence
                                "Indicates a ip-address node is configured.";
                              description
                                "configure this node";
                              leaf ipv4-address {
                                type inet:ipv4-address-no-zone;
                                mandatory true;
                                description
                                  "configure this node";
                              }
    
                              leaf index {
                                type uint32 {
                                  range
                                    "0..65535";
                                }
                                mandatory true;
                                description
                                  "IPv4Address:index (hex or decimal format)";
                              }
                            }  // container ip-address
                          }  // container site-of-origin
                        }  // list address-family
                      }  // container address-families
    
                      container graceful-maintenance {
                        presence
                          "Indicates a graceful-maintenance node is configured.";
                        description
                          "BGP Graceful Maintenance mode configuration.";
                        container local-preference {
                          must
                            "local-preference-value or inheritance-disable";
                          presence
                            "Indicates a local-preference node is configured.";
                          description
                            "local preference with which to advertise routes to ibgps. Default=No Touch";
                          leaf local-preference-value {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "Range of values for Local Preference";
                          }
    
                          container inheritance-disable {
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent local preference from being inherited from the parent";
                          }  // container inheritance-disable
                        }  // container local-preference
    
                        container as-prepends {
                          must
                            "number-of-as-prepends or inheritance-disable";
                          presence
                            "Indicates a as-prepends node is configured.";
                          description
                            "Number of times to prepend the local AS number to the AS poutes. Default=0";
                          leaf number-of-as-prepends {
                            type uint32 {
                              range "0..6";
                            }
                            description
                              "Range of number of AS prepends";
                          }
    
                          container inheritance-disable {
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent AS prepends from being inherited from the parent";
                          }  // container inheritance-disable
                        }  // container as-prepends
    
                        container activate {
                          presence
                            "Indicates a activate node is configured.";
                          description
                            "Routes will be announced with the graceful maintenance
    attrhile activated either here or under router
    bgp ation. While activated, all routes to this
    neigl be announced with the attributes
    confere and all routes from this neighbor will
    be a to other neighbors with the graceful
    mainattributes configured under those
    neighe g-shut community will be announced
    regaf the other attributes configured here. To
    alloshut community to be announced to ebgp
    neighe send-community-gshut-ebgp configuration
    is aired. Note: changes to the attributes will
    not ect while activated.";
                          container inheritance-disable {
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent activate from being inherited from the parent";
                          }  // container inheritance-disable
                        }  // container activate
                      }  // container graceful-maintenance
    
                      container update {
                        description
                          "BGP Update configuration";
                        container in {
                          description
                            "Inbound update message handling";
                          container filtering {
                            presence
                              "Indicates a filtering node is configured.";
                            description
                              "Inbound update message filtering";
                            container message {
                              description
                                "Filtered update messages";
                              leaf buffers {
                                type uint32 {
                                  range "0..25";
                                }
                                must
                                  "not(../non-circular)";
                                description
                                  "Filtered update message buffers";
                              }
    
                              container non-circular {
                                must
                                  "not(../buffers)";
                                presence
                                  "Indicates a non-circular node is configured.";
                                description
                                  "Message buffer list is not circular";
                              }  // container non-circular
                            }  // container message
    
                            container logging {
                              description
                                "Update filtering syslog message";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable update filtering syslog message";
                              }  // container disable
                            }  // container logging
    
                            container attribute-filter {
                              description
                                "Attribute-filter configuration";
                              leaf group {
                                type xr:Cisco-ios-xr-string {
                                  length
                                    "1..1024";
                                }
                                description
                                  "Attribute-filter group configuration";
                              }
                            }  // container attribute-filter
                          }  // container filtering
                        }  // container in
                      }  // container update
    
                      leaf remote-as {
                        type xr:Bgp-as-number;
                        description
                          "bgp as-number";
                      }
    
                      leaf remote-as-list {
                        type string {
                          length "1..1024";
                        }
                        description
                          "Remote as-list configuration";
                      }
    
                      container use {
                        description
                          "Inherit configuration from a group";
                        leaf session-group {
                          type string {
                            length "1..1024";
                          }
                          description
                            "Inherit address-family independent config from a session-group";
                        }
    
                        leaf neighbor-group {
                          type string {
                            length "1..1024";
                          }
                          description
                            "Inherit configuration from a neighbor-group";
                        }
                      }  // container use
    
                      container advertisement-interval {
                        presence
                          "Indicates a advertisement-interval node is configured.";
                        description
                          "Minimum interval between sending BGP routing updates";
                        leaf time-in-seconds {
                          type uint32 {
                            range "0..600";
                          }
                          mandatory true;
                          description
                            "Minimum interval between sending BGP routing updates";
                        }
    
                        leaf time-in-milliseconds {
                          type uint32 {
                            range "0..999";
                          }
                          description
                            "time in milliseconds";
                        }
                      }  // container advertisement-interval
    
                      leaf description {
                        type string {
                          length "1..1024";
                        }
                        description
                          "Neighbor specific description";
                      }
    
                      container ignore-connected-check {
                        presence
                          "Indicates a ignore-connected-check node is configured.";
                        description
                          "Bypass the directly connected nexthop check for single-hop eBGP peering";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent ignore-connected-check from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container ignore-connected-check
    
                      container internal-vpn-client {
                        presence
                          "Indicates a internal-vpn-client node is configured.";
                        description
                          "Preserve iBGP CE neighbor path in ATTR_SET across VPN core";
                      }  // container internal-vpn-client
    
                      container ebgp-multihop {
                        presence
                          "Indicates a ebgp-multihop node is configured.";
                        description
                          "Allow EBGP neighbors not on directly connected networks";
                        leaf maximum-hop-count {
                          type uint32 {
                            range "1..255";
                          }
                          mandatory true;
                          description
                            "maximum hop count";
                        }
    
                        container mpls {
                          presence
                            "Indicates a mpls node is configured.";
                          description
                            "Disable BGP MPLS forwarding";
                        }  // container mpls
                      }  // container ebgp-multihop
    
                      container tcp {
                        description
                          "TCP session configuration commands";
                        container mss {
                          must
                            "initial-mss or inheritance-disable";
                          presence
                            "Indicates a mss node is configured.";
                          description
                            "Maximum Segment Size";
                          leaf initial-mss {
                            type uint32 {
                              range "68..10000";
                            }
                            description
                              "TCP initial maximum segment size";
                          }
    
                          container inheritance-disable {
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent tcp mss from being inherited from the parent";
                          }  // container inheritance-disable
                        }  // container mss
                      }  // container tcp
    
                      container bmp-activate {
                        description
                          "Enable BMP logging for this neighbor";
                        container servers {
                          description
                            "Enable BMP connection to particular server";
                          list server {
                            key "server-id";
                            description
                              "Enable BMP connection to particular server";
                            leaf server-id {
                              type uint32 {
                                range "1..8";
                              }
                              description
                                "Enable BMP connection to particular server";
                            }
                          }  // list server
                        }  // container servers
                      }  // container bmp-activate
    
                      container bfd {
                        description
                          "Configure BFD parameters";
                        container fast-detect {
                          must
                            "not(strict-mode and inheritance-disable)";
                          presence
                            "Indicates a fast-detect node is configured.";
                          description
                            "Enable Fast detection";
                          container strict-mode {
                            presence
                              "Indicates a strict-mode node is configured.";
                            description
                              "Hold down neighbor session until BFD session is up";
                          }  // container strict-mode
    
                          container inheritance-disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Prevent bfd settings from being inherited from the parent";
                          }  // container inheritance-disable
                        }  // container fast-detect
    
                        leaf minimum-interval {
                          type uint32 {
                            range "3..30000";
                          }
                          description
                            "Hello interval";
                        }
    
                        leaf multiplier {
                          type uint32 {
                            range "2..16";
                          }
                          description
                            "Detect multiplier";
                        }
                      }  // container bfd
    
                      container keychain {
                        must
                          "name or inheritance-disable";
                        presence
                          "Indicates a keychain node is configured.";
                        description
                          "Set keychain based authentication";
                        leaf name {
                          type string {
                            length "1..32";
                          }
                          description
                            "Name of the key chain - maximum 32 characters";
                        }
    
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent keychain from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container keychain
    
                      container local-as {
                        must
                          "as-number or inheritance-disable";
                        presence
                          "Indicates a local-as node is configured.";
                        description
                          "Specify local AS number";
                        leaf as-number {
                          type xr:Bgp-as-number;
                          description
                            "bgp as-number";
                        }
    
                        container no-prepend {
                          presence
                            "Indicates a no-prepend node is configured.";
                          description
                            "Do not prepend local AS to announcements from this neighbor";
                          container replace-as {
                            presence
                              "Indicates a replace-as node is configured.";
                            description
                              "Prepend only local AS to announcements to this neighbor";
                            container dual-as {
                              presence
                                "Indicates a dual-as node is configured.";
                              description
                                "Dual-AS mode";
                            }  // container dual-as
                          }  // container replace-as
                        }  // container no-prepend
    
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent local AS from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container local-as
    
                      container password {
                        must
                          "encrypted or inheritance-disable";
                        presence
                          "Indicates a password node is configured.";
                        description
                          "Set a password";
                        leaf encrypted {
                          type xr:Proprietary-password;
                          description
                            "Specifies an ENCRYPTED password will follow";
                        }
    
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent password from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container password
    
                      container receive-buffer-size {
                        presence
                          "Indicates a receive-buffer-size node is configured.";
                        description
                          "Set socket and BGP receive buffer size";
                        leaf receive-socket-buffer-size {
                          type uint32 {
                            range "512..131072";
                          }
                          mandatory true;
                          description
                            "Set socket and BGP receive buffer size";
                        }
    
                        leaf bgp-read-buffer-size {
                          type uint32 {
                            range "512..131072";
                          }
                          description
                            "BGP Read buffer size in bytes";
                        }
                      }  // container receive-buffer-size
    
                      container send-buffer-size {
                        presence
                          "Indicates a send-buffer-size node is configured.";
                        description
                          "Set socket and BGP send buffer size";
                        leaf send-socket-buffer-size {
                          type uint32 {
                            range "4096..131072";
                          }
                          mandatory true;
                          description
                            "Set socket and BGP send buffer size";
                        }
    
                        leaf bgp-write-buffer-size {
                          type uint32 {
                            range "4096..131072";
                          }
                          description
                            "BGP Write buffer size in bytes";
                        }
                      }  // container send-buffer-size
    
                      container shutdown {
                        presence
                          "Indicates a shutdown node is configured.";
                        description
                          "Administratively shut down this neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent this neighbor being shutdown, even if its parent is";
                        }  // container inheritance-disable
                      }  // container shutdown
    
                      container timers {
                        presence
                          "Indicates a timers node is configured.";
                        description
                          "BGP per neighbor timers";
                        leaf keepalive-interval {
                          type uint32 {
                            range "0..65535";
                          }
                          mandatory true;
                          description
                            "BGP timers";
                        }
    
                        leaf holdtime {
                          type union {
                            type uint32 {
                              range "0";
                            }
                            type uint32 {
                              range "3..65535";
                            }
                          }
                          mandatory true;
                          description
                            "Holdtime. Set 0 to disable keepalives/hold time.";
                        }
    
                        leaf minimum-acceptable-holdtime {
                          type union {
                            type uint32 {
                              range "0";
                            }
                            type uint32 {
                              range "3..65535";
                            }
                          }
                          description
                            "Minimum acceptable holdtime from neighbor. Set 0 to disable keepalives/hold time.";
                        }
                      }  // container timers
    
                      container local {
                        description
                          "Configure local parameter";
                        container address {
                          must
                            "ip-address or inheritance-disable";
                          presence
                            "Indicates a address node is configured.";
                          description
                            "use configured local address for bgp peering";
                          leaf ip-address {
                            type inet:ip-address-no-zone;
                            description
                              "IPv4 address";
                          }
    
                          container inheritance-disable {
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent local address from being inherited from parent";
                          }  // container inheritance-disable
                        }  // container address
                      }  // container local
    
                      container log {
                        description
                          "Logging update messages per neighbor";
                        container message {
                          description
                            "Logging update/notification messages per neighbor";
                          container in {
                            description
                              "Inbound log messages";
                            leaf message-log-buffer-size {
                              type uint32 {
                                range "1..500";
                              }
                              description
                                "Range for message log buffer size";
                            }
    
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable inbound message logging";
                            }  // container disable
    
                            container inheritance-diable {
                              presence
                                "Indicates a inheritance-diable node is configured.";
                              description
                                "Prevents the msg log from being inherited from the parent";
                            }  // container inheritance-diable
                          }  // container in
    
                          container out {
                            description
                              "Outbound log messages";
                            leaf message-log-buffer-size {
                              type uint32 {
                                range "1..500";
                              }
                              description
                                "Range for message log buffer size";
                            }
    
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable outbound message logging";
                            }  // container disable
    
                            container inheritance-diable {
                              presence
                                "Indicates a inheritance-diable node is configured.";
                              description
                                "Prevents the msg log from being inherited from the parent";
                            }  // container inheritance-diable
                          }  // container out
                        }  // container message
                      }  // container log
    
                      leaf update-source {
                        type xr:Interface-name;
                        description
                          "Source of routing updates";
                      }
    
                      container local-address-subnet {
                        description
                          "Local address subnet of routing updates";
                        leaf ip-address {
                          type inet:ip-address-no-zone;
                          description
                            "IP address and mask length";
                        }
    
                        leaf mask-length {
                          type uint32 {
                            range "0..128";
                          }
                          description
                            "IP address and mask length";
                        }
                      }  // container local-address-subnet
    
                      container dmz-link-bandwidth {
                        presence
                          "Indicates a dmz-link-bandwidth node is configured.";
                        description
                          "Propagate the DMZ link bandwidth";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent dmz-link-bandwidth from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container dmz-link-bandwidth
    
                      container ebgp-recv-extcommunity-dmz {
                        presence
                          "Indicates a ebgp-recv-extcommunity-dmz node is configured.";
                        description
                          "Receive extcommunity dmz link bandwidth from ebgp neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent ebgp-send-community-dmz from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container ebgp-recv-extcommunity-dmz
    
                      container ebgp-send-extcommunity-dmz {
                        must
                          "not(cumulative and inheritance-disable)";
                        presence
                          "Indicates a ebgp-send-extcommunity-dmz node is configured.";
                        description
                          "Send extended community dmz link bandwidth to ebgp neighbor";
                        container cumulative {
                          presence
                            "Indicates a cumulative node is configured.";
                          description
                            "Send cumulative community dmz link bandwidth of all multipaths to ebgp neighbor";
                        }  // container cumulative
    
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent ebgp-send-extcommunity-dmz from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container ebgp-send-extcommunity-dmz
    
                      container ttl-security {
                        presence
                          "Indicates a ttl-security node is configured.";
                        description
                          "Enable EBGP TTL security";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent ttl-security from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container ttl-security
    
                      container session-open-mode {
                        description
                          "Establish BGP session using this TCP open mode";
                        container active-only {
                          must
                            "not(../passive-only or ../both)";
                          presence
                            "Indicates a active-only node is configured.";
                          description
                            "Active only";
                        }  // container active-only
    
                        container passive-only {
                          must
                            "not(../active-only or ../both)";
                          presence
                            "Indicates a passive-only node is configured.";
                          description
                            "Passive only";
                        }  // container passive-only
    
                        container both {
                          must
                            "not(../active-only or ../passive-only)";
                          presence
                            "Indicates a both node is configured.";
                          description
                            "Prevent session-open-mode being inherited from the parent";
                        }  // container both
                      }  // container session-open-mode
    
                      leaf dscp {
                        type enumeration {
                          enum "default" {
                            value 0;
                            description
                              "Set packets with default dscp (000000)";
                          }
                          enum "cs1" {
                            value 8;
                            description
                              "Set packets with CS1(precedence 1) dscp (001000)";
                          }
                          enum "af11" {
                            value 10;
                            description
                              "Set packets with AF11 dscp (001010)";
                          }
                          enum "af12" {
                            value 12;
                            description
                              "Set packets with AF12 dscp (001100)";
                          }
                          enum "af13" {
                            value 14;
                            description
                              "Set packets with AF13 dscp (001110)";
                          }
                          enum "cs2" {
                            value 16;
                            description
                              "Set packets with CS2(precedence 2) dscp (010000)";
                          }
                          enum "af21" {
                            value 18;
                            description
                              "Set packets with AF21 dscp (010010)";
                          }
                          enum "af22" {
                            value 20;
                            description
                              "Set packets with AF22 dscp (010100)";
                          }
                          enum "af23" {
                            value 22;
                            description
                              "Set packets with AF23 dscp (010110)";
                          }
                          enum "cs3" {
                            value 24;
                            description
                              "Set packets with CS3(precedence 3) dscp (011000)";
                          }
                          enum "af31" {
                            value 26;
                            description
                              "Set packets with AF31 dscp (011010)";
                          }
                          enum "af32" {
                            value 28;
                            description
                              "Set packets with AF32 dscp (011100)";
                          }
                          enum "af33" {
                            value 30;
                            description
                              "Set packets with AF33 dscp (011110)";
                          }
                          enum "cs4" {
                            value 32;
                            description
                              "Set packets with CS4(precedence 4) dscp (100000)";
                          }
                          enum "af41" {
                            value 34;
                            description
                              "Set packets with AF41 dscp (100010)";
                          }
                          enum "af42" {
                            value 36;
                            description
                              "Set packets with AF42 dscp (100100)";
                          }
                          enum "af43" {
                            value 38;
                            description
                              "Set packets with AF43 dscp (100110)";
                          }
                          enum "cs5" {
                            value 40;
                            description
                              "Set packets with CS5(precedence 5) dscp (101000)";
                          }
                          enum "ef" {
                            value 46;
                            description
                              "Set packets with EF dscp (101110)";
                          }
                          enum "cs6" {
                            value 48;
                            description
                              "Set packets with CS6(precedence 6) dscp (110000)";
                          }
                          enum "cs7" {
                            value 56;
                            description
                              "Set packets with CS7(precedence 7) dscp (111000)";
                          }
                        }
                        description
                          "Set IP DSCP (DiffServ CodePoint)";
                      }
    
                      leaf precedence {
                        type enumeration {
                          enum "routine" {
                            value 0;
                            description
                              "Set packets with routine precedence (0)";
                          }
                          enum "priority" {
                            value 1;
                            description
                              "Set packets with priority precedence (1)";
                          }
                          enum "immediate" {
                            value 2;
                            description
                              "Set packets with immediate precedence (2)";
                          }
                          enum "flash" {
                            value 3;
                            description
                              "Set packets with flash precedence (3)";
                          }
                          enum "flash-override" {
                            value 4;
                            description
                              "Set packets with flash override precedence (4)";
                          }
                          enum "critical" {
                            value 5;
                            description
                              "Set packets with critical precedence (5)";
                          }
                          enum "internet" {
                            value 6;
                            description
                              "Set packets with internetwork control precedence (6)";
                          }
                          enum "network" {
                            value 7;
                            description
                              "Set packets with network control precedence (7)";
                          }
                        }
                        description
                          "Set precedence";
                      }
    
                      container capability {
                        description
                          "Advertise capability to the peer";
                        container suppress {
                          description
                            "Suppress advertising capability to the peer ";
                          container four-byte-as {
                            presence
                              "Indicates a four-byte-as node is configured.";
                            description
                              "4-byte-as capability";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent capability suppress 4-type-as being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container four-byte-as
    
                          container all {
                            presence
                              "Indicates a all node is configured.";
                            description
                              "All capabilities";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Do not inherit this configuration from parent group";
                            }  // container inheritance-disable
                          }  // container all
    
                          container extended-nexthop-encoding {
                            presence
                              "Indicates a extended-nexthop-encoding node is configured.";
                            description
                              "Extended-nexthop-encoding capabilities (IETF RFC 5549)";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Do not inherit this configuration from parent group";
                            }  // container inheritance-disable
                          }  // container extended-nexthop-encoding
                        }  // container suppress
    
                        container additional-paths {
                          description
                            "Additional paths capability";
                          container send {
                            presence
                              "Indicates a send node is configured.";
                            description
                              "Additional paths Send capability";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Do not advertise additional paths Send capability";
                            }  // container disable
                          }  // container send
    
                          container receive {
                            presence
                              "Indicates a receive node is configured.";
                            description
                              "Additional paths Receive capability";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Do not advertise additional paths Receive capability";
                            }  // container disable
                          }  // container receive
                        }  // container additional-paths
                      }  // container capability
    
                      container graceful-restart {
                        presence
                          "Indicates a graceful-restart node is configured.";
                        description
                          "Enable graceful restart support for this neighbor";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable graceful restart support for this neighbor";
                        }  // container disable
    
                        leaf restart-time {
                          type uint32 {
                            range "1..4095";
                          }
                          description
                            "Restart time advertised to the neighbor";
                        }
    
                        leaf stalepath-time {
                          type uint32 {
                            range "1..4095";
                          }
                          description
                            "Maximum time to wait for restart of GR capable peer";
                        }
                      }  // container graceful-restart
    
                      container enforce-first-as {
                        presence
                          "Indicates a enforce-first-as node is configured.";
                        description
                          "Enforce the first AS for EBGP routes";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Do not enforce the first AS for EBGP routes";
                        }  // container disable
                      }  // container enforce-first-as
    
                      container cluster-id {
                        description
                          "Enter cluster id for this neighbor";
                        leaf route-reflector-cluster-id {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          description
                            "Route-Reflector Cluster-id as 32 bit quantity";
                        }
    
                        leaf ip-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "configure this node";
                        }
                      }  // container cluster-id
    
                      leaf maximum-peers {
                        type uint32 {
                          range "1..4095";
                        }
                        description
                          "Maximum dynamic neighbors";
                      }
    
                      leaf idle-watch-time {
                        type uint32 {
                          range "30..1800";
                        }
                        description
                          "Maximum time to wait for deletion of IDLE state dynamic peer";
                      }
    
                      container egress-engineering {
                        presence
                          "Indicates a egress-engineering node is configured.";
                        description
                          "Enable egress peer engineering for this neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Do not inherit egress-engineering from the parent";
                        }  // container inheritance-disable
                      }  // container egress-engineering
    
                      container peer-sets {
                        description
                          "Assign this neighbor to a peer-set used for egress peer engineering";
                        list peer-set {
                          key "peer-set-id";
                          description
                            "Assign this neighbor to a peer-set used for egress peer engineering";
                          leaf peer-set-id {
                            type uint32 {
                              range "1..255";
                            }
                            description
                              "Assign this neighbor to a peer-set used for egress peer engineering";
                          }
                        }  // list peer-set
                      }  // container peer-sets
    
                      container ao {
                        description
                          "Enable Authentiation Option";
                        leaf key-chain-name {
                          type string {
                            length "1..32";
                          }
                          must
                            "not(../inheritance-disable) and (../include-tcp-options/enable or ../include-tcp-options/disable)";
                          description
                            "Name of the key chain - maximum 32 characters";
                        }
    
                        container include-tcp-options {
                          description
                            "Include/Exclude other TCP options in the header";
                          container enable {
                            must
                              "not(../disable or ../../inheritance-disable)";
                            presence
                              "Indicates a enable node is configured.";
                            description
                              "Include other TCP options in the header";
                          }  // container enable
    
                          container disable {
                            must
                              "not(../enable or ../../inheritance-disable)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Exclude other TCP options in the header";
                          }  // container disable
    
                          container accept-ao-mismatch-connection {
                            must
                              "../enable or ../disable";
                            presence
                              "Indicates a accept-ao-mismatch-connection node is configured.";
                            description
                              "Accept new connection even if AO mismatched";
                          }  // container accept-ao-mismatch-connection
                        }  // container include-tcp-options
    
                        container inheritance-disable {
                          must
                            "not(../key-chain-name)";
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent keychain from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container ao
                    }  // list neighbor-group
                  }  // container neighbor-groups
    
                  container mpls {
                    description
                      "Enable mpls parameters";
                    container activate {
                      description
                        "Enter mpls interfaces in BGP mpls activate mode";
                      container interfaces {
                        description
                          "Interface to enable mpls";
                        list interface {
                          key "interface-name";
                          description
                            "Interface to enable mpls";
                          leaf interface-name {
                            type xr:Interface-name;
                            description
                              "Interface to enable mpls";
                          }
                        }  // list interface
                      }  // container interfaces
                    }  // container activate
                  }  // container mpls
    
                  container as-league {
                    presence
                      "Indicates a as-league node is configured.";
                    description
                      "AS League command mode";
                    container peers {
                      description
                        "AS League peers mode";
                      list as {
                        key "as-number";
                        description
                          "bgp as-number";
                        leaf as-number {
                          type xr:Bgp-as-number;
                          description
                            "bgp as-number";
                        }
                      }  // list as
                    }  // container peers
                  }  // container as-league
    
                  container attribute-filter {
                    description
                      "Attribute-filter configuration";
                    container groups {
                      description
                        "Attribute-filter group command mode";
                      list group {
                        key "group-name";
                        description
                          "Attribute-filter group command mode";
                        leaf group-name {
                          type string {
                            length "1..1024";
                          }
                          description
                            "Attribute-filter group command mode";
                        }
    
                        container attributes {
                          description
                            "Attribute code";
                          container ranges {
                            description
                              "Attribute code in range";
                            list range {
                              must
                                "discard or treat-as-withdraw";
                              key "start end";
                              description
                                "Attribute code in range";
                              leaf start {
                                type uint32 {
                                  range
                                    "4..13 | 16..255";
                                }
                                description
                                  "Attribute code range start";
                              }
    
                              leaf end {
                                type uint32 {
                                  range
                                    "5..13 | 17..255";
                                }
                                description
                                  "Attribute code range end";
                              }
    
                              container discard {
                                presence
                                  "Indicates a discard node is configured.";
                                description
                                  "Discard this attribute";
                              }  // container discard
    
                              container treat-as-withdraw {
                                presence
                                  "Indicates a treat-as-withdraw node is configured.";
                                description
                                  "Treat the update message as a Withdraw";
                              }  // container treat-as-withdraw
                            }  // list range
                          }  // container ranges
    
                          list attribute {
                            must
                              "discard or treat-as-withdraw";
                            key "attribute-code";
                            description
                              "Attribute code";
                            leaf attribute-code {
                              type Bgp-attribute-code;
                              description
                                "Attribute code. Also to be set as range start";
                            }
    
                            container discard {
                              presence
                                "Indicates a discard node is configured.";
                              description
                                "Discard this attribute";
                            }  // container discard
    
                            container treat-as-withdraw {
                              presence
                                "Indicates a treat-as-withdraw node is configured.";
                              description
                                "Treat the update message as a Withdraw";
                            }  // container treat-as-withdraw
                          }  // list attribute
    
                          container unrecognized {
                            must
                              "discard or treat-as-withdraw";
                            presence
                              "Indicates a unrecognized node is configured.";
                            description
                              "All unrecognized attributes";
                            container discard {
                              presence
                                "Indicates a discard node is configured.";
                              description
                                "Discard this attribute";
                            }  // container discard
    
                            container treat-as-withdraw {
                              presence
                                "Indicates a treat-as-withdraw node is configured.";
                              description
                                "Treat the update message as a Withdraw";
                            }  // container treat-as-withdraw
                          }  // container unrecognized
                        }  // container attributes
                      }  // list group
                    }  // container groups
                  }  // container attribute-filter
    
                  container default-information {
                    description
                      "Control distribution of default information";
                    container originate {
                      presence
                        "Indicates a originate node is configured.";
                      description
                        "Distribute a default route";
                    }  // container originate
                  }  // container default-information
    
                  leaf default-metric {
                    type uint32 {
                      range "1..4294967295";
                    }
                    description
                      "default redistributed metric";
                  }
    
                  container socket {
                    description
                      "set socket parameters";
                    leaf send-buffer-size {
                      type uint32 {
                        range "4096..131072";
                      }
                      description
                        "socket send buffer size";
                    }
    
                    leaf bgp-write-buffer-size {
                      type uint32 {
                        range "4096..131072";
                      }
                      must "../send-buffer-size";
                      description
                        "BGP Write buffer size in bytes";
                    }
    
                    leaf receive-buffer-size {
                      type uint32 {
                        range "512..131072";
                      }
                      description
                        "socket receive buffer size";
                    }
    
                    leaf bgp-read-buffer-size {
                      type uint32 {
                        range "512..131072";
                      }
                      must
                        "../receive-buffer-size";
                      description
                        "BGP Read buffer size in bytes";
                    }
                  }  // container socket
    
                  container nexthop {
                    description
                      "Configure next-hop related items";
                    container mpls {
                      description
                        "Configure next-hop related items for mpls";
                      container forwarding {
                        description
                          "Enable next hop mpls forwarding path";
                        container ibgp {
                          presence
                            "Indicates a ibgp node is configured.";
                          description
                            "Enable mpls forwarding path for ibgp learnt nexthops";
                        }  // container ibgp
                      }  // container forwarding
                    }  // container mpls
    
                    container resolution {
                      description
                        "Configure next-hop related items for resolution";
                      container allow-default {
                        presence
                          "Indicates a allow-default node is configured.";
                        description
                          "Enable nexthops resolution using default route";
                      }  // container allow-default
                    }  // container resolution
    
                    container validation {
                      description
                        "Configure next-hop reachability validation";
                      container color-extcomm {
                        description
                          "Configure next-hop reachability validation for color-extcomm path";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable next-hop reachability validation for color-extcomm path";
                        }  // container disable
    
                        container sr-policy {
                          presence
                            "Indicates a sr-policy node is configured.";
                          description
                            "Enable BGP next-hop reachability validation by SR Policy for color-extcomm paths";
                        }  // container sr-policy
                      }  // container color-extcomm
                    }  // container validation
    
                    container srte-metric {
                      description
                        "Configure BGP next-hop metric inheritance from SR policy";
                      container disable {
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable BGP next-hop metric inheritance from SR policy";
                      }  // container disable
                    }  // container srte-metric
                  }  // container nexthop
    
                  container slow-peer {
                    description
                      "Disable slow peer detection";
                    container detection {
                      description
                        "Disable slow peer detection";
                      container disable {
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable slow peer detection";
                      }  // container disable
                    }  // container detection
                  }  // container slow-peer
    
                  container timers {
                    description
                      "Adjust routing timers";
                    container bgp {
                      presence
                        "Indicates a bgp node is configured.";
                      description "BGP timers";
                      leaf keepalive-interval {
                        type uint32 {
                          range "0..65535";
                        }
                        mandatory true;
                        description "BGP timers";
                      }
    
                      leaf holdtime {
                        type union {
                          type uint32 {
                            range "0";
                          }
                          type uint32 {
                            range "3..65535";
                          }
                        }
                        mandatory true;
                        description
                          "Holdtime. Set 0 to disable keepalives/hold time.";
                      }
    
                      leaf minimum-acceptable-holdtime {
                        type union {
                          type uint32 {
                            range "0";
                          }
                          type uint32 {
                            range "3..65535";
                          }
                        }
                        description
                          "Minimum acceptable holdtime from neighbor. Set 0 to disable keepalives/hold time.";
                      }
                    }  // container bgp
                  }  // container timers
    
                  container nsr {
                    presence
                      "Indicates a nsr node is configured.";
                    description
                      "Enable non-stop-routing support for all neighbors";
                    container disable {
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Disable non-stop-routing support for all neighbors";
                    }  // container disable
                  }  // container nsr
    
                  container ibgp {
                    description
                      "Set options for iBGP peers";
                    container policy {
                      description
                        "Set options for route-policy";
                      container out {
                        description
                          "Set options for outbound policy";
                        container enforce-modifications {
                          presence
                            "Indicates a enforce-modifications node is configured.";
                          description
                            "Allow policy to modify all attributes";
                        }  // container enforce-modifications
                      }  // container out
                    }  // container policy
                  }  // container ibgp
    
                  container mvpn {
                    presence
                      "Indicates a mvpn node is configured.";
                    description
                      "Connect to PIM/PIM6";
                  }  // container mvpn
    
                  container graceful-maintenance {
                    description
                      "Announce routes with the g-shut community and other
    attrs configured under the neighbors. This
    willeighbors to de-prefer routes from this
    routhoose alternates. This allows the router
    to bt in or out of service gracefully.";
                    container activate {
                      presence
                        "Indicates a activate node is configured.";
                      description
                        "All neighbors with graceful-maintenance config";
                      container all-neighbors {
                        presence
                          "Indicates a all-neighbors node is configured.";
                        description
                          "Also neighbors without graceful-maintenance config";
                      }  // container all-neighbors
    
                      container retain-routes {
                        presence
                          "Indicates a retain-routes node is configured.";
                        description
                          "Keep BGP routes in RIB once BGP process stops";
                      }  // container retain-routes
    
                      container interfaces {
                        description
                          "Enable graceful-maintenance on all directly connected ebgp neighbors whose session is going over this interface";
                        list interface {
                          key "interface-name";
                          description
                            "Enable graceful-maintenance on all directly connected ebgp neighbors whose session is going over this interface";
                          leaf interface-name {
                            type xr:Interface-name;
                            description
                              "Interface to enable graceful-maintenance";
                          }
                        }  // list interface
                      }  // container interfaces
    
                      container locations {
                        description
                          "Enable graceful-maintenance on all directly connected ebgp neighbors whose session is going over this line card location";
                        list location {
                          key "location-name";
                          description
                            "Enable graceful-maintenance on all directly connected ebgp neighbors whose session is going over this line card location";
                          leaf location-name {
                            type xr:Node-id;
                            description
                              "Line card location to enable graceful-maintenance";
                          }
                        }  // list location
                      }  // container locations
                    }  // container activate
                  }  // container graceful-maintenance
    
                  container optimal-route-reflection {
                    description
                      "Configure optimal-route-reflection group";
                    container ipv4 {
                      description
                        "IPv4 ORR group";
                      list orr-group {
                        key "orr-group-name";
                        description
                          "ORR group name - maximum 32 characters";
                        leaf orr-group-name {
                          type string {
                            length "1..32";
                          }
                          description
                            "ORR group name - maximum 32 characters";
                        }
    
                        leaf primary-address {
                          type inet:ipv4-address-no-zone;
                          mandatory true;
                          description
                            "IPv4 primary address";
                        }
    
                        leaf secondary-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "IPv4 secondary address";
                        }
    
                        leaf tertiary-address {
                          type inet:ipv4-address-no-zone;
                          must
                            "../secondary-address";
                          description
                            "IPv4 tertiary address";
                        }
                      }  // list orr-group
                    }  // container ipv4
    
                    container ipv6 {
                      description
                        "IPv6 ORR group";
                      list orr-group {
                        key "orr-group-name";
                        description
                          "ORR group name - maximum 32 characters";
                        leaf orr-group-name {
                          type string {
                            length "1..32";
                          }
                          description
                            "ORR group name - maximum 32 characters";
                        }
    
                        leaf primary-address {
                          type inet:ipv6-address-no-zone;
                          mandatory true;
                          description
                            "IPv6 primary address";
                        }
    
                        leaf secondary-address {
                          type inet:ipv6-address-no-zone;
                          description
                            "IPv6 secondary address";
                        }
    
                        leaf tertiary-address {
                          type inet:ipv6-address-no-zone;
                          must
                            "../secondary-address";
                          description
                            "IPv6 tertiary address";
                        }
                      }  // list orr-group
                    }  // container ipv6
                  }  // container optimal-route-reflection
    
                  container bgp {
                    description "BGP commands";
                    container as-path-loopcheck {
                      presence
                        "Indicates a as-path-loopcheck node is configured.";
                      description
                        "Enable AS-path loop checking for iBGP peers";
                    }  // container as-path-loopcheck
    
                    container auto-policy-soft-reset {
                      description
                        "Enable automatic soft peer reset on policy reconfiguration";
                      container disable {
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable automatic soft peer reset on policy reconfiguration";
                      }  // container disable
                    }  // container auto-policy-soft-reset
    
                    container bestpath {
                      description
                        "Change default route selection criteria";
                      container as-path {
                        description
                          "AS path length";
                        container ignore {
                          presence
                            "Indicates a ignore node is configured.";
                          description
                            "Ignore as-path length";
                        }  // container ignore
    
                        container multipath-relax {
                          presence
                            "Indicates a multipath-relax node is configured.";
                          description
                            "Relax as-path check for multipath selection";
                        }  // container multipath-relax
                      }  // container as-path
    
                      container cost-community {
                        description
                          "Cost community";
                        container ignore {
                          presence
                            "Indicates a ignore node is configured.";
                          description
                            "Ignore cost-community comparison";
                        }  // container ignore
                      }  // container cost-community
    
                      container compare-routerid {
                        presence
                          "Indicates a compare-routerid node is configured.";
                        description
                          "Compare router-id for identical EBGP paths";
                      }  // container compare-routerid
    
                      container aigp {
                        description
                          "AIGP attribute";
                        container ignore {
                          presence
                            "Indicates a ignore node is configured.";
                          description
                            "Ignore AIGP attribute";
                        }  // container ignore
                      }  // container aigp
    
                      container igp-metric {
                        description
                          "IGP metric values";
                        container ignore {
                          presence
                            "Indicates a ignore node is configured.";
                          description
                            "Ignore IGP metric during path comparison";
                        }  // container ignore
    
                        container sr-policy {
                          presence
                            "Indicates a sr-policy node is configured.";
                          description
                            "Use next-hop admin/metric from SR policy at Next Hop metric comparison stage";
                        }  // container sr-policy
                      }  // container igp-metric
    
                      container med {
                        description
                          "MED related";
                        container always {
                          presence
                            "Indicates a always node is configured.";
                          description
                            "Allow comparing MED from different neighbors";
                        }  // container always
    
                        container confed {
                          presence
                            "Indicates a confed node is configured.";
                          description
                            "Compare MED among confederation paths";
                        }  // container confed
    
                        container missing-as-worst {
                          presence
                            "Indicates a missing-as-worst node is configured.";
                          description
                            "Treat missing MED as the least preferred one";
                        }  // container missing-as-worst
                      }  // container med
    
                      container origin-as {
                        description
                          "BGP origin-AS knobs";
                        container use {
                          description
                            "BGP origin-AS knobs";
                          container validity {
                            presence
                              "Indicates a validity node is configured.";
                            description
                              "BGP bestpath selection will use origin-AS validity";
                          }  // container validity
                        }  // container use
    
                        container allow {
                          description
                            "BGP origin-AS knobs";
                          container invalid {
                            presence
                              "Indicates a invalid node is configured.";
                            description
                              "BGP bestpath selection will allow 'invalid' origin-AS";
                          }  // container invalid
                        }  // container allow
                      }  // container origin-as
    
                      container sr-policy {
                        description
                          "Paths over SR-policy";
                        container prefer {
                          presence
                            "Indicates a sr-policy node is configured.";
                          description
                            "Consider only paths over SR Policy for bestpath selection";
                        }  // container prefer
                      }  // container sr-policy
                    }  // container bestpath
    
                    container cluster-id {
                      description
                        "Configure Route-Reflector Cluster-id";
                      leaf route-reflector-cluster-id {
                        type uint32 {
                          range "1..4294967295";
                        }
                        description
                          "Route-Reflector Cluster-id as 32 bit quantity";
                      }
    
                      leaf ip-address {
                        type inet:ipv4-address-no-zone;
                        description
                          "configure this node";
                      }
                    }  // container cluster-id
    
                    container confederation {
                      description
                        "AS confederation parameters";
                      container identifier {
                        description
                          "Set routing domain confederation AS";
                        leaf as {
                          type xr:Bgp-as-number;
                          description
                            "bgp as-number";
                        }
                      }  // container identifier
    
                      list peers {
                        key "peer-as-number";
                        description
                          "Enter peer ASs in BGP confederation mode";
                        leaf peer-as-number {
                          type xr:Bgp-as-number;
                          description
                            "bgp as-number";
                        }
                      }  // list peers
                    }  // container confederation
    
                    container default {
                      description
                        "Configure default value";
                      leaf local-preference {
                        type uint32 {
                          range "0..4294967295";
                        }
                        description
                          "Local preference";
                      }
                    }  // container default
    
                    container enforce-first-as {
                      description
                        "Enforce the first AS for EBGP routes";
                      container disable {
                        presence
                          "Indicates a disable node is configured.";
                        description "Disable";
                      }  // container disable
                    }  // container enforce-first-as
    
                    container fast-external-fallover {
                      description
                        "Immediately reset session if a link to a directly connected external peer goes down";
                      container disable {
                        presence
                          "Indicates a disable node is configured.";
                        description "Disable";
                      }  // container disable
                    }  // container fast-external-fallover
    
                    container graceful-restart {
                      presence
                        "Indicates a graceful-restart node is configured.";
                      description
                        "Enable Graceful Restart support";
                      leaf purge-time {
                        type uint32 {
                          range "0..6000";
                        }
                        description
                          "Time before stale routes are purged.";
                      }
    
                      leaf restart-time {
                        type uint32 {
                          range "1..4095";
                        }
                        description
                          "Restart time advertised to neighbors";
                      }
    
                      leaf stalepath-time {
                        type uint32 {
                          range "1..4095";
                        }
                        description
                          "Maximum time to wait for restart of GR capable peers";
                      }
    
                      container graceful-reset {
                        presence
                          "Indicates a graceful-reset node is configured.";
                        description
                          "Reset gracefully if configuration change forces a peer reset";
                      }  // container graceful-reset
    
                      container retain-nbr-routes {
                        description
                          "Retain neighbor routes when neighbor session resets if neighbor also has graceful restart disabled";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "do not retain neighbor routes";
                        }  // container disable
                      }  // container retain-nbr-routes
                    }  // container graceful-restart
    
                    container read-only {
                      presence
                        "Indicates a read-only node is configured.";
                      description
                        "Allow duplicate table config and disable update generation";
                    }  // container read-only
    
                    container install {
                      description
                        "Install diversion path to RIB/CEF";
                      container diversion {
                        presence
                          "Indicates a diversion node is configured.";
                        description
                          "Install diversion path to RIB/CEF";
                      }  // container diversion
                    }  // container install
    
                    container log {
                      description "Log bgp info";
                      container neighbor {
                        description
                          "Log neighbor state info";
                        container changes {
                          description
                            "Log neighbor up/down and reset reason";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable logging";
                          }  // container disable
    
                          container detail {
                            presence
                              "Indicates a detail node is configured.";
                            description
                              "Include extra detail in change messages";
                          }  // container detail
                        }  // container changes
                      }  // container neighbor
    
                      container message {
                        description
                          "Log neighbor inbound/outbound message";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable inbound and outbound message logging for all neighbors under the vrf";
                        }  // container disable
                      }  // container message
                    }  // container log
    
                    container multipath {
                      description
                        "Change multipath selection criteria";
                      container as-path {
                        description "AS path";
                        container ignore {
                          description
                            "Ignore as-path related check for multipath selection";
                          container exact-match {
                            presence
                              "Indicates a exact-match node is configured.";
                            description
                              "Ignore as-path for multipath selection";
                          }  // container exact-match
    
                          container onwards {
                            presence
                              "Indicates a onwards node is configured.";
                            description
                              "Ignore everything onwards as-path for multipath selection";
                          }  // container onwards
                        }  // container ignore
                      }  // container as-path
                    }  // container multipath
    
                    container redistribute-internal {
                      presence
                        "Indicates a redistribute-internal node is configured.";
                      description
                        "Allow redistribution of iBGP into IGPs (dangerous)";
                    }  // container redistribute-internal
    
                    leaf router-id {
                      type inet:ipv4-address-no-zone;
                      description
                        "Configure Router-id";
                    }
    
                    container unsafe-ebgp-policy {
                      presence
                        "Indicates a unsafe-ebgp-policy node is configured.";
                      description
                        "Make eBGP neighbors with no policy pass all routes";
                    }  // container unsafe-ebgp-policy
    
                    container update-delay {
                      presence
                        "Indicates a update-delay node is configured.";
                      description
                        "Set the max initial delay for sending updates";
                      leaf delay {
                        type uint32 {
                          range "0..3600";
                        }
                        mandatory true;
                        description
                          "Set the max initial delay for sending updates";
                      }
    
                      container always {
                        presence
                          "Indicates a always node is configured.";
                        description
                          "Keepalive trigger bestpath is disabled and delay is enforced";
                      }  // container always
                    }  // container update-delay
    
                    leaf scan-time {
                      type uint32 {
                        range "5..3600";
                      }
                      description
                        "Configure background scanner interval for generic scanner";
                    }
    
                    container maximum {
                      description
                        "Maximum number that can be configured";
                      leaf neighbor {
                        type uint32 {
                          range "1..15000";
                        }
                        description
                          "Maximum number of neighbors that can be configured";
                      }
                    }  // container maximum
    
                    container origin-as {
                      description
                        "BGP origin-AS knobs";
                      container validation {
                        description
                          "BGP origin-AS validation knobs";
                        container signal {
                          description
                            "Signal origin-AS validity towards peers";
                          container ibgp {
                            presence
                              "Indicates a ibgp node is configured.";
                            description
                              "Signal origin-AS validity towards iBGP peers";
                          }  // container ibgp
                        }  // container signal
    
                        container time {
                          description
                            "Time to wait between an RPKI update and a BGP table walk";
                          container off {
                            presence
                              "Indicates a off node is configured.";
                            description
                              "No automatic prefix validation after an RPKI update";
                          }  // container off
    
                          leaf prefix-validation-time {
                            type uint32 {
                              range "5..60";
                            }
                            description
                              "Prefix validation time (in seconds)";
                          }
                        }  // container time
    
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable RPKI origin-AS validation";
                        }  // container disable
                      }  // container validation
                    }  // container origin-as
                  }  // container bgp
    
                  container update {
                    description
                      "BGP Update configuration";
                    container out {
                      description
                        "BGP Update generation configuration";
                      container logging {
                        presence
                          "Indicates a logging node is configured.";
                        description
                          "Enable logging of update generation events";
                      }  // container logging
                    }  // container out
    
                    leaf limit {
                      type uint32 {
                        range "16..2048";
                      }
                      description
                        "Upper bound on transient memory usage for update generation";
                    }
    
                    container in {
                      description
                        "Inbound update message handling";
                      container error-handling {
                        description
                          "Inbound update message error handling";
                        container basic {
                          description
                            "Inbound update message basic error handling";
                          container ebgp {
                            description
                              "Inbound update message basic error handling for EBGP neighbors";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable inbound update message basic error handling for EBGP neighbors";
                            }  // container disable
                          }  // container ebgp
    
                          container ibgp {
                            description
                              "Inbound update message basic error handling for IBGP neighbors";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable inbound update message basic error handling for IBGP neighbors";
                            }  // container disable
                          }  // container ibgp
                        }  // container basic
    
                        container extended {
                          description
                            "Inbound update message extended error handling";
                          container ebgp {
                            presence
                              "Indicates a ebgp node is configured.";
                            description
                              "Inbound update message extended error handling for EBGP neighbors";
                          }  // container ebgp
    
                          container ibgp {
                            presence
                              "Indicates a ibgp node is configured.";
                            description
                              "Inbound update message extended error handling for IBGP neighbors";
                          }  // container ibgp
                        }  // container extended
                      }  // container error-handling
                    }  // container in
                  }  // container update
    
                  container bfd {
                    description
                      "Configure BFD parameters";
                    leaf minimum-interval {
                      type uint32 {
                        range "3..30000";
                      }
                      description
                        "Hello interval";
                    }
    
                    leaf multiplier {
                      type uint32 {
                        range "2..16";
                      }
                      description
                        "Detect multiplier";
                    }
                  }  // container bfd
    
                  container as-lists {
                    description
                      "List of AS numbers";
                    list as-list {
                      key "as-list-name";
                      description
                        "List of AS numbers";
                      leaf as-list-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..1024";
                        }
                        description
                          "List of AS numbers";
                      }
    
                      list as {
                        key "as-number";
                        description
                          "bgp as-number";
                        leaf as-number {
                          type xr:Bgp-as-number;
                          description
                            "bgp as-number";
                        }
                      }  // list as
                    }  // list as-list
                  }  // container as-lists
    
                  container adjacencies {
                    description
                      "Submode to configure adjacencies in an EPE set";
                    container ip-addresses {
                      description
                        "Firsthop address of the adjacency";
                      list ip-address {
                        key "address";
                        description
                          "Firsthop address of the adjacency";
                        leaf address {
                          type inet:ip-address-no-zone;
                          description
                            "Firsthop address of the adjacency";
                        }
    
                        container peer-sets {
                          description
                            "Assign this adjacency to a peer-set used for egress peer engineering";
                          list peer-set {
                            key "peer-set-id";
                            description
                              "Assign this adjacency to a peer-set used for egress peer engineering";
                            leaf peer-set-id {
                              type uint32 {
                                range "1..255";
                              }
                              description
                                "Assign this adjacency to a peer-set used for egress peer engineering";
                            }
                          }  // list peer-set
                        }  // container peer-sets
    
                        container adjacency-sid {
                          description
                            "Configure SID value for this Adjacency EPE object";
                          leaf index {
                            type uint32 {
                              range "0..1033575";
                            }
                            description
                              "Segment Index value to assign. This will be off SRLB range";
                          }
                        }  // container adjacency-sid
                      }  // list ip-address
                    }  // container ip-addresses
                  }  // container adjacencies
    
                  container segment-routing {
                    description
                      "Enter Segment-Routing Mode";
                    container srv6 {
                      presence
                        "Indicates srv6 node is configured";
                      description
                        "Configure srv6";
                      leaf locator {
                        type xr:Cisco-ios-xr-string {
                          length "1..1024";
                        }
                        description
                          "Configure locator name";
                      }
                    }  // container srv6
                  }  // container segment-routing
    
                  container vrfs {
                    description
                      "Specify a vrf name";
                    list vrf {
                      key "vrf-name";
                      description
                        "Specify a vrf name";
                      leaf vrf-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "Specify a vrf name";
                      }
    
                      container address-families {
                        description
                          "Enter Address Family command mode";
                        list address-family {
                          key "af-name";
                          description
                            "Enter Address Family command mode";
                          leaf af-name {
                            type Bgp-address-family;
                            description
                              "Enter Address Family command mode";
                          }
    
                          container distance {
                            description
                              "Define an administrative distance";
                            container bgp {
                              presence
                                "Indicates a bgp node is configured.";
                              description
                                "BGP distance";
                              leaf external-routes {
                                type uint32 {
                                  range "1..255";
                                }
                                mandatory true;
                                description
                                  "BGP distance";
                              }
    
                              leaf internal-routes {
                                type uint32 {
                                  range "1..255";
                                }
                                mandatory true;
                                description
                                  "Distance for routes internal to the AS";
                              }
    
                              leaf local-routes {
                                type uint32 {
                                  range "1..255";
                                }
                                mandatory true;
                                description
                                  "Distance for local routes";
                              }
                            }  // container bgp
                          }  // container distance
    
                          container allow {
                            description
                              "Allow sending default originate route to VPN neighbor";
                            container vpn {
                              description
                                "Originate default route to VPN neighbor";
                              container default-originate {
                                presence
                                  "Indicates a default-originate node is configured.";
                                description
                                  "Originate default route to VPN neighbor";
                              }  // container default-originate
                            }  // container vpn
                          }  // container allow
    
                          container optimal-route-reflection {
                            when
                              "../af-name != 'ipv4-mvpn' and ../af-name != 'ipv6-mvpn' and ../af-name != 'ipv4-flowspec' and ../af-name != 'ipv6-flowspec' and ../af-name != 'ipv4-sr-policy' and ../af-name != 'ipv6-sr-policy'";
                            description
                              "Configure optimal-route-reflection group";
                            list orr-group {
                              key "orr-group-name";
                              description
                                "ORR group name - maximum 32 characters";
                              leaf orr-group-name {
                                type xr:Cisco-ios-xr-string {
                                  length "1..32";
                                }
                                description
                                  "ORR group name - maximum 32 characters";
                              }
    
                              leaf primary-address {
                                type inet:ip-address-no-zone;
                                mandatory true;
                                description
                                  "IPv4 primary address";
                              }
    
                              leaf secondary-address {
                                type inet:ip-address-no-zone;
                                description
                                  "IPv4 secondary address";
                              }
    
                              leaf tertiary-address {
                                type inet:ip-address-no-zone;
                                must
                                  "../secondary-address";
                                description
                                  "IPv4 tertiary address";
                              }
                            }  // list orr-group
    
                            list apply {
                              key "orr-group-name";
                              description
                                "Apply optimal-route-reflection group";
                              leaf orr-group-name {
                                type xr:Cisco-ios-xr-string {
                                  length "1..32";
                                }
                                description
                                  "ORR group name - maximum 32 characters";
                              }
                            }  // list apply
    
                            container fallback-default-bestpath {
                              presence
                                "Indicates an ebgp node is configured.";
                              description
                                "In case none of the paths are accessible in
    an ORR table, fallback to default table bestpath
    as ORR bestpath";
                            }  // container fallback-default-bestpath
                          }  // container optimal-route-reflection
    
                          container maximum-paths {
                            when
                              "../af-name != 'vpn4-unicast' and ../af-name != 'vpnv4-multicast' and ../af-name != 'vpnv6-unicast' and ../af-name != 'vpnv6-multicast' and ../af-name != 'vpnv4-mdt' and ../af-name != 'l2vpn-vpls-vpws' and ../af-name != 'l2vpn-evpn' and ../af-name != 'l2vpn-mspw' and ../af-name != 'ipv4-mvpn' and ../af-name != 'ipv6-mvpn' and ../af-name != 'ipv4-tunnel' and ../af-name != 'ipv4-rt-filter' and ../af-name != 'link-state-link-state' and ../af-name != 'ipv4-flowspec' and ../af-name != 'ipv6-flowspec' and ../af-name != 'vpnv4-flowspec' and ../af-name != 'vpnv6-flowspec' and ../af-name != 'ipv4-sr-policy' and ../af-name != 'ipv6-sr-policy'";
                            description
                              "Forward packets over multiple paths";
                            container ebgp {
                              presence
                                "Indicates an ebgp node is configured.";
                              description
                                "eBGP-multipath";
                              leaf multipath {
                                type uint32 {
                                  range "2..128";
                                }
                                mandatory true;
                                description
                                  "eBGP-multipath";
                              }
    
                              container selective {
                                presence
                                  "Indicates a selective node is configured.";
                                description
                                  "Allow multipaths only from marked neighbors";
                              }  // container selective
    
                              container order {
                                description
                                  "Order candidate multipaths for selection as per configured number";
                                container igp-metric {
                                  presence
                                    "Indicates an igp-metric node is configured.";
                                  description
                                    "Order by IGP metric ";
                                }  // container igp-metric
                              }  // container order
                            }  // container ebgp
    
                            container eibgp {
                              presence
                                "Indicates an eibgp node is configured.";
                              description
                                "eiBGP-multipath";
                              leaf multipath {
                                type uint32 {
                                  range "2..128";
                                }
                                mandatory true;
                                description
                                  "eiBGP-multipath";
                              }
    
                              container selective {
                                presence
                                  "Indicates a selective node is configured.";
                                description
                                  "Allow multipaths only from marked neighbors";
                              }  // container selective
    
                              container order {
                                description
                                  "Order candidate multipaths for selection as per configured number";
                                container igp-metric {
                                  presence
                                    "Indicates an igp-metric node is configured.";
                                  description
                                    "Order by IGP metric ";
                                }  // container igp-metric
                              }  // container order
                            }  // container eibgp
    
                            container ibgp {
                              presence
                                "Indicates an ibgp node is configured.";
                              description
                                "iBGP-multipath";
                              leaf multipath {
                                type uint32 {
                                  range "2..128";
                                }
                                mandatory true;
                                description
                                  "iBGP-multipath";
                              }
    
                              container selective {
                                presence
                                  "Indicates a selective node is configured.";
                                description
                                  "Allow multipaths only from marked neighbors";
                              }  // container selective
    
                              container order {
                                description
                                  "Order candidate multipaths for selection as per configured number";
                                container igp-metric {
                                  presence
                                    "Indicates an igp-metric node is configured.";
                                  description
                                    "Order by IGP metric ";
                                }  // container igp-metric
                              }  // container order
    
                              container unequal-cost {
                                presence
                                  "Indicates an unequal-cost node is configured.";
                                description
                                  "Allow multipaths to have different BGP nexthop IGP metrics ";
                              }  // container unequal-cost
                            }  // container ibgp
                          }  // container maximum-paths
    
                          container additional-paths {
                            when
                              "../af-name != 'ipv4-multicast' and ../af-name != 'ipv6-multicast' and ../af-name != 'ipv4-mdt' and ../af-name != 'l2vpn-vpls-vpws' and ../af-name != 'ipv4-tunnel'";
                            description
                              "Additional paths configuration";
                            container send {
                              presence
                                "Indicates a send node is configured.";
                              description
                                "Additional paths Send capability";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Do not advertise additional paths Send capability";
                              }  // container disable
                            }  // container send
    
                            container receive {
                              presence
                                "Indicates a receive node is configured.";
                              description
                                "Additional paths Receive capability";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Do not advertise additional paths Receive capability";
                              }  // container disable
                            }  // container receive
    
                            container selection {
                              description
                                "Additional paths selection";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable additional paths selection";
                              }  // container disable
    
                              leaf route-policy {
                                type xr:Route-policy-name;
                                description
                                  "Route-policy for additional paths selection";
                              }
                            }  // container selection
                          }  // container additional-paths
    
                          container route-target {
                            description
                              "Route target RIB installation";
                            container download {
                              presence
                                "Indicates a download node is configured.";
                              description
                                "Install route-targets in RIB";
                            }  // container download
                          }  // container route-target
    
                          container enable {
                            description
                              "Enable commands for address-family";
                            container label-mode {
                              presence
                                "Indicates a label-mode node is configured.";
                              description
                                "enable label allocation for address-family.
    Use only if dual mode srv6 and mpls is needed.
    This will result in allocation of both,
    label and sid for prefixes in the vrf.";
                            }  // container label-mode
                          }  // container enable
    
                          container advertise {
                            description
                              "Advertise BGP path";
                            container best-external {
                              presence
                                "Indicates a best-external node is configured.";
                              description
                                "Advertise best-external path";
                              container labeled-unicast {
                                must
                                  "not(../disable)";
                                presence
                                  "Indicates a labeled-unicast node is configured.";
                                description
                                  "Limit best-external to Labeled-Unicast address family";
                              }  // container labeled-unicast
    
                              container disable {
                                must
                                  "not(../labeled-unicast)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Do not advertise best-external path";
                              }  // container disable
                            }  // container best-external
    
                            container local-labeled-route {
                              when
                                "../../af-name = 'ipv4-unicast' or ../../af-name = 'ipv6-unicast'";
                              description
                                "Advertisement of routes with local-label";
                              container safi-unicast {
                                presence
                                  "Indicates a safi-unicast node is configured.";
                                description
                                  "Advertisement of routes with local-label via Unicast SAFI";
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Do not advertise routes with local-label via Unicast SAFI";
                                }  // container disable
                              }  // container safi-unicast
                            }  // container local-labeled-route
                          }  // container advertise
    
                          container nexthop {
                            description
                              "Nexthop";
                            container resolution {
                              description
                                "Nexthop resolution";
                              container prefix-length {
                                description
                                  "Nexthop resolution prefix-length";
                                leaf minimum {
                                  type union {
                                    type uint32 {
                                      range
                                        "0..32";
                                    }
                                    type uint32 {
                                      range
                                        "0..128";
                                    }
                                  }
                                  description
                                    "Set minimum prefix-length for nexthop resolution";
                                }
    
                                leaf minimum-ipv6 {
                                  type uint32 {
                                    range
                                      "0..128";
                                  }
                                  description
                                    "IPv6 Prefix-length value";
                                }
                              }  // container prefix-length
                            }  // container resolution
                          }  // container nexthop
    
                          container networks {
                            description
                              "Specify a network to announce via BGP";
                            list network {
                              key "address masklength";
                              description
                                "IPv6 network and mask or masklength";
                              leaf address {
                                type inet:ip-address-no-zone;
                                description
                                  "IPv6 network and mask or masklength";
                              }
    
                              leaf masklength {
                                type uint16 {
                                  range "0..128";
                                }
                                description
                                  "Network in prefix/length format (prefix part)";
                              }
    
                              leaf route-policy {
                                type xr:Route-policy-name;
                                description
                                  "Route-policy to modify the attributes";
                              }
    
                              container backdoor {
                                presence
                                  "Indicates a backdoor node is configured.";
                                description
                                  "Specify a BGP backdoor route";
                              }  // container backdoor
    
                              container multipath {
                                presence
                                  "Indicates a backdoor node is configured.";
                                description
                                  "Enable installation of multiple paths from RIB";
                              }  // container multipath
                            }  // list network
                          }  // container networks
    
                          container aggregate-addresses {
                            description
                              "Configure BGP aggregate entries";
                            list aggregate-address {
                              key "address masklength";
                              description
                                "IPv6 Aggregate address and mask or masklength";
                              leaf address {
                                type inet:ip-address-no-zone;
                                description
                                  "IPv6 Aggregate address and mask or masklength";
                              }
    
                              leaf masklength {
                                type uint16 {
                                  range "0..128";
                                }
                                description
                                  "Network in prefix/length format (prefix part)";
                              }
    
                              container as-set {
                                presence
                                  "Indicates a as-set node is configured.";
                                description
                                  "Generate AS set path information";
                              }  // container as-set
    
                              container as-confed-set {
                                presence
                                  "Indicates a as-confed-set node is configured.";
                                description
                                  "Generate AS confed set path information";
                              }  // container as-confed-set
    
                              container summary-only {
                                presence
                                  "Indicates a summary-only node is configured.";
                                description
                                  "Filter more specific routes from updates";
                              }  // container summary-only
    
                              leaf route-policy {
                                type xr:Route-policy-name;
                                description
                                  "Policy to condition advertisement, suppression, and attributes";
                              }
                            }  // list aggregate-address
                          }  // container aggregate-addresses
    
                          container redistribute {
                            when
                              "../af-name = 'ipv4-unicast' or ../af-name = 'ipv4-multicast' or ../af-name = 'ipv6-unicast' or ../af-name = 'ipv6-multicast'";
                            description
                              "Redistribute information from another routing protocol";
                            list ospf {
                              key "router-tag";
                              description
                                "Open Shortest Path First (OSPF/OSPFv3)";
                              leaf router-tag {
                                type xr:Cisco-ios-xr-string {
                                  length
                                    "1..1024";
                                }
                                description
                                  "Open Shortest Path First (OSPF)";
                              }
    
                              container match {
                                presence
                                  "Indicates a match node is configured.";
                                description
                                  "Redistribution of OSPF routes";
                                container internal {
                                  presence
                                    "Indicates a internal node is configured.";
                                  description
                                    "Redistribute OSPF internal routes";
                                  container external {
                                    presence
                                      "Indicates a external node is configured.";
                                    description
                                      "Redistribute OSPF external routes";
                                    container one {
                                      presence
                                        "Indicates a one node is configured.";
                                      description
                                        "Redistribute external type 1 routes";
                                      container nssa-external {
                                        presence
                                          "Indicates a nssa-external node is configured.";
                                        description
                                          "Redistribute OSPF NSSA external routes";
                                        container one {
                                          presence
                                            "Indicates a one node is configured.";
                                          description
                                            "Redistribute NSSA external type 1 routes";
                                        }  // container one
    
                                        container two {
                                          presence
                                            "Indicates a two node is configured.";
                                          description
                                            "Redistribute NSSA external type 2 routes";
                                        }  // container two
                                      }  // container nssa-external
                                    }  // container one
    
                                    container two {
                                      presence
                                        "Indicates a two node is configured.";
                                      description
                                        "Redistribute external type 2 routes";
                                      container nssa-external {
                                        presence
                                          "Indicates a nssa-external node is configured.";
                                        description
                                          "Redistribute OSPF NSSA external routes";
                                        container one {
                                          presence
                                            "Indicates a one node is configured.";
                                          description
                                            "Redistribute NSSA external type 1 routes";
                                        }  // container one
    
                                        container two {
                                          presence
                                            "Indicates a two node is configured.";
                                          description
                                            "Redistribute NSSA external type 2 routes";
                                        }  // container two
                                      }  // container nssa-external
                                    }  // container two
    
                                    container nssa-external {
                                      presence
                                        "Indicates a nssa-external node is configured.";
                                      description
                                        "Redistribute OSPF NSSA external routes";
                                      container one {
                                        presence
                                          "Indicates a one node is configured.";
                                        description
                                          "Redistribute NSSA external type 1 routes";
                                      }  // container one
    
                                      container two {
                                        presence
                                          "Indicates a two node is configured.";
                                        description
                                          "Redistribute NSSA external type 2 routes";
                                      }  // container two
                                    }  // container nssa-external
                                  }  // container external
    
                                  container nssa-external {
                                    presence
                                      "Indicates a nssa-external node is configured.";
                                    description
                                      "Redistribute OSPF NSSA external routes";
                                    container one {
                                      presence
                                        "Indicates a one node is configured.";
                                      description
                                        "Redistribute NSSA external type 1 routes";
                                    }  // container one
    
                                    container two {
                                      presence
                                        "Indicates a two node is configured.";
                                      description
                                        "Redistribute NSSA external type 2 routes";
                                    }  // container two
                                  }  // container nssa-external
                                }  // container internal
    
                                container external {
                                  presence
                                    "Indicates a external node is configured.";
                                  description
                                    "Redistribute OSPF external routes";
                                  container one {
                                    presence
                                      "Indicates a one node is configured.";
                                    description
                                      "Redistribute external type 1 routes";
                                    container nssa-external {
                                      presence
                                        "Indicates a nssa-external node is configured.";
                                      description
                                        "Redistribute OSPF NSSA external routes";
                                      container one {
                                        presence
                                          "Indicates a one node is configured.";
                                        description
                                          "Redistribute NSSA external type 1 routes";
                                      }  // container one
    
                                      container two {
                                        presence
                                          "Indicates a two node is configured.";
                                        description
                                          "Redistribute NSSA external type 2 routes";
                                      }  // container two
                                    }  // container nssa-external
                                  }  // container one
    
                                  container two {
                                    presence
                                      "Indicates a two node is configured.";
                                    description
                                      "Redistribute external type 2 routes";
                                    container nssa-external {
                                      presence
                                        "Indicates a nssa-external node is configured.";
                                      description
                                        "Redistribute OSPF NSSA external routes";
                                      container one {
                                        presence
                                          "Indicates a one node is configured.";
                                        description
                                          "Redistribute NSSA external type 1 routes";
                                      }  // container one
    
                                      container two {
                                        presence
                                          "Indicates a two node is configured.";
                                        description
                                          "Redistribute NSSA external type 2 routes";
                                      }  // container two
                                    }  // container nssa-external
                                  }  // container two
    
                                  container nssa-external {
                                    presence
                                      "Indicates a nssa-external node is configured.";
                                    description
                                      "Redistribute OSPF NSSA external routes";
                                    container one {
                                      presence
                                        "Indicates a one node is configured.";
                                      description
                                        "Redistribute NSSA external type 1 routes";
                                    }  // container one
    
                                    container two {
                                      presence
                                        "Indicates a two node is configured.";
                                      description
                                        "Redistribute NSSA external type 2 routes";
                                    }  // container two
                                  }  // container nssa-external
                                }  // container external
    
                                container nssa-external {
                                  presence
                                    "Indicates a nssa-external node is configured.";
                                  description
                                    "Redistribute OSPF NSSA external routes";
                                  container one {
                                    presence
                                      "Indicates a one node is configured.";
                                    description
                                      "Redistribute NSSA external type 1 routes";
                                  }  // container one
    
                                  container two {
                                    presence
                                      "Indicates a two node is configured.";
                                    description
                                      "Redistribute NSSA external type 2 routes";
                                  }  // container two
                                }  // container nssa-external
                              }  // container match
    
                              container multipath {
                                presence
                                  "Indicates a multipath node is configured.";
                                description
                                  "Enable installation of multiple paths from RIB";
                              }  // container multipath
    
                              leaf metric {
                                type uint32 {
                                  range
                                    "0..4294967295";
                                }
                                description
                                  "Metric for redistributed routes";
                              }
    
                              leaf route-policy {
                                type xr:Route-policy-name;
                                description
                                  "Route policy reference";
                              }
                            }  // list ospf
    
                            list eigrp {
                              key "instance-name";
                              description
                                "Enhanced Interior Gateway Routing Protocol (EIGRP)";
                              leaf instance-name {
                                type xr:Cisco-ios-xr-string {
                                  length
                                    "1..1024";
                                }
                                description
                                  "Enhanced Interior Gateway Routing Protocol (EIGRP)";
                              }
    
                              container match {
                                description
                                  "EIGRP route type for redistribution";
                                container internal {
                                  presence
                                    "Indicates a internal node is configured.";
                                  description
                                    "Redistribute EIGRP internal routes";
                                  container external {
                                    presence
                                      "Indicates a external node is configured.";
                                    description
                                      "Redistribute EIGRP external routes";
                                  }  // container external
                                }  // container internal
    
                                container external {
                                  presence
                                    "Indicates a external node is configured.";
                                  description
                                    "Redistribute EIGRP external routes";
                                }  // container external
                              }  // container match
    
                              container multipath {
                                presence
                                  "Indicates a multipath node is configured.";
                                description
                                  "Enable installation of multiple paths from RIB";
                              }  // container multipath
    
                              leaf metric {
                                type uint32 {
                                  range
                                    "0..4294967295";
                                }
                                description
                                  "Metric for redistributed routes";
                              }
    
                              leaf route-policy {
                                type xr:Route-policy-name;
                                description
                                  "Route policy reference";
                              }
                            }  // list eigrp
    
                            list application {
                              key "application-name";
                              description
                                "OnePK application routes";
                              leaf application-name {
                                type xr:Cisco-ios-xr-string {
                                  length
                                    "1..1024";
                                }
                                description
                                  "OnePK application name";
                              }
    
                              leaf metric {
                                type uint32 {
                                  range
                                    "0..4294967295";
                                }
                                description
                                  "Metric for redistributed routes";
                              }
    
                              leaf route-policy {
                                type xr:Route-policy-name;
                                description
                                  "Route policy reference";
                              }
    
                              container multipath {
                                presence
                                  "Indicates a multipath node is configured.";
                                description
                                  "Enable installation of multiple paths from RIB";
                              }  // container multipath
                            }  // list application
    
                            container connected {
                              presence
                                "Indicates a connected node is configured.";
                              description
                                "Connected routes";
                              leaf metric {
                                type uint32 {
                                  range
                                    "0..4294967295";
                                }
                                description
                                  "Metric for redistributed routes";
                              }
    
                              leaf route-policy {
                                type xr:Route-policy-name;
                                description
                                  "Route policy reference";
                              }
    
                              container multipath {
                                presence
                                  "Indicates a multipath node is configured.";
                                description
                                  "Enable installation of multiple paths from RIB";
                              }  // container multipath
                            }  // container connected
    
                            container lisp {
                              presence
                                "Indicates a lisp node is configured.";
                              description
                                "Locator/ID Separation Protocol (LISP)";
                              leaf metric {
                                type uint32 {
                                  range
                                    "0..4294967295";
                                }
                                description
                                  "Metric for redistributed routes";
                              }
    
                              leaf route-policy {
                                type xr:Route-policy-name;
                                description
                                  "Route policy reference";
                              }
    
                              container multipath {
                                presence
                                  "Indicates a multipath node is configured.";
                                description
                                  "Enable installation of multiple paths from RIB";
                              }  // container multipath
                            }  // container lisp
    
                            container mobile {
                              presence
                                "Indicates a mobile node is configured.";
                              description
                                "Mobile routes";
                              leaf metric {
                                type uint32 {
                                  range
                                    "0..4294967295";
                                }
                                description
                                  "Metric for redistributed routes";
                              }
    
                              leaf route-policy {
                                type xr:Route-policy-name;
                                description
                                  "Route policy reference";
                              }
    
                              container multipath {
                                presence
                                  "Indicates a multipath node is configured.";
                                description
                                  "Enable installation of multiple paths from RIB";
                              }  // container multipath
                            }  // container mobile
    
                            container rip {
                              when
                                "../../af-name = 'ipv4-unicast' or ../../af-name = 'ipv4-multicast'";
                              presence
                                "Indicates a rip node is configured.";
                              description
                                "Routing Information Protocol (RIP)";
                              leaf metric {
                                type uint32 {
                                  range
                                    "0..4294967295";
                                }
                                description
                                  "Metric for redistributed routes";
                              }
    
                              leaf route-policy {
                                type xr:Route-policy-name;
                                description
                                  "Route policy reference";
                              }
    
                              container multipath {
                                presence
                                  "Indicates a multipath node is configured.";
                                description
                                  "Enable installation of multiple paths from RIB";
                              }  // container multipath
                            }  // container rip
    
                            container static {
                              presence
                                "Indicates a static node is configured.";
                              description
                                "Static routes";
                              leaf metric {
                                type uint32 {
                                  range
                                    "0..4294967295";
                                }
                                description
                                  "Metric for redistributed routes";
                              }
    
                              leaf route-policy {
                                type xr:Route-policy-name;
                                description
                                  "Route policy reference";
                              }
    
                              container multipath {
                                presence
                                  "Indicates a multipath node is configured.";
                                description
                                  "Enable installation of multiple paths from RIB";
                              }  // container multipath
                            }  // container static
    
                            container subscriber {
                              presence
                                "Indicates a lisp node is configured.";
                              description
                                "subscriber routes";
                              leaf metric {
                                type uint32 {
                                  range
                                    "0..4294967295";
                                }
                                description
                                  "Metric for redistributed routes";
                              }
    
                              leaf route-policy {
                                type xr:Route-policy-name;
                                description
                                  "Route policy reference";
                              }
    
                              container multipath {
                                presence
                                  "Indicates a multipath node is configured.";
                                description
                                  "Enable installation of multiple paths from RIB";
                              }  // container multipath
                            }  // container subscriber
                          }  // container redistribute
    
                          leaf table-policy {
                            type xr:Route-policy-name;
                            description
                              "Configure policy for installation of routes to RIB";
                          }
    
                          container allocate-label {
                            description
                              "Allocate label for selected prefixes";
                            container all {
                              presence
                                "Indicates a all node is configured.";
                              description
                                "Allocate labels for all prefixes";
                              container unlabeled-path {
                                presence
                                  "Indicates a unlabeled-path node is configured.";
                                description
                                  "Allocate label for unlabeled paths too";
                              }  // container unlabeled-path
                            }  // container all
    
                            leaf route-policy {
                              type xr:Route-policy-name;
                              description
                                "Use a route policy to select prefixes for label allocation";
                            }
                          }  // container allocate-label
    
                          container label {
                            description
                              "Label-related configuration";
                            container mode {
                              description
                                "Select label mode";
                              container per-prefix {
                                when
                                  "../../../af-name = 'ipv4-unicast' or ../../../af-name = 'ipv6-unicast'";
                                must
                                  "not(../per-ce or ../per-vrf or ../route-policy)";
                                presence
                                  "Indicates a per-prefix node is configured.";
                                description
                                  "Set per perfix label mode";
                              }  // container per-prefix
    
                              container per-ce {
                                when
                                  "../../../af-name = 'ipv4-unicast' or ../../../af-name = 'ipv6-unicast'";
                                must
                                  "not(../per-prefix or ../per-vrf or ../route-policy)";
                                presence
                                  "Indicates a per-ce node is configured.";
                                description
                                  "Set per CE label mode";
                              }  // container per-ce
    
                              container per-vrf {
                                when
                                  "../../../af-name = 'ipv4-unicast' or ../../../af-name = 'ipv6-unicast'";
                                must
                                  "not(../per-prefix or ../per-ce or ../route-policy)";
                                presence
                                  "Indicates a per-vrf node is configured.";
                                description
                                  "Set per VRF label mode";
                              }  // container per-vrf
    
                              leaf route-policy {
                                when
                                  "../../../af-name = 'ipv4-unicast' or ../../../af-name = 'ipv6-unicast'";
                                type xr:Route-policy-name;
                                must
                                  "not(../per-prefix or ../per-ce or ../per-vrf)";
                                description
                                  "Use a route policy to select prefixes for label allocation mode";
                              }
                            }  // container mode
                          }  // container label
    
                          container bgp {
                            description
                              "BGP Commands";
                            container dampening {
                              presence
                                "Indicates a dampening node is configured.";
                              description
                                "Enable route-flap dampening";
                              leaf half-life-time {
                                type uint32 {
                                  range "1..45";
                                }
                                must
                                  "not(../route-policy)";
                                description
                                  "Half-life time for the penalty";
                              }
    
                              leaf start-reusing-route {
                                type uint32 {
                                  range
                                    "1..20000";
                                }
                                must
                                  "../half-life-time and ../start-suppressing-route";
                                description
                                  "Value to start reusing a route";
                              }
    
                              leaf start-suppressing-route {
                                type uint32 {
                                  range
                                    "1..20000";
                                }
                                must
                                  "../start-reusing-route and ../maximum-duration";
                                description
                                  "Value to start suppressing a route";
                              }
    
                              leaf maximum-duration {
                                type uint32 {
                                  range "1..255";
                                }
                                must
                                  "../start-suppressing-route";
                                description
                                  "Maximum duration to suppress a stable route";
                              }
    
                              leaf route-policy {
                                type xr:Route-policy-name;
                                must
                                  "not(../half-life-time)";
                                description
                                  "Route policy to specify criteria for dampening";
                              }
                            }  // container dampening
    
                            container attribute-download {
                              presence
                                "Indicates a attribute-download node is configured.";
                              description
                                "Configure attribute download for this address-family";
                            }  // container attribute-download
    
                            container origin-as {
                              description
                                "BGP origin-AS knobs";
                              container validation {
                                description
                                  "BGP origin-AS validation knobs";
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable RPKI origin-AS validation";
                                }  // container disable
    
                                container enable {
                                  presence
                                    "Indicates a enable node is configured.";
                                  description
                                    "Enable RPKI origin-AS validation";
                                }  // container enable
    
                                container signal {
                                  description
                                    "Signal origin-AS validity towards peers";
                                  container ibgp {
                                    presence
                                      "Indicates a ibgp node is configured.";
                                    description
                                      "Signal origin-AS validity towards iBGP peers";
                                  }  // container ibgp
                                }  // container signal
                              }  // container validation
                            }  // container origin-as
    
                            container bestpath {
                              description
                                "Change default route selection criteria";
                              container origin-as {
                                description
                                  "BGP origin-AS knobs";
                                container use {
                                  description
                                    "BGP origin-AS knobs";
                                  container validity {
                                    presence
                                      "Indicates a validity node is configured.";
                                    description
                                      "BGP bestpath selection will use origin-AS validity";
                                  }  // container validity
                                }  // container use
    
                                container allow {
                                  description
                                    "BGP origin-AS knobs";
                                  container invalid {
                                    presence
                                      "Indicates a invalid node is configured.";
                                    description
                                      "BGP bestpath selection will allow 'invalid' origin-AS";
                                  }  // container invalid
                                }  // container allow
                              }  // container origin-as
                            }  // container bestpath
                          }  // container bgp
    
                          container event {
                            description
                              "Policy for per-prefix tracing";
                            container prefix {
                              description
                                "Policy for per-prefix tracing";
                              leaf route-policy {
                                type xr:Route-policy-name;
                                description
                                  "Policy for per-prefix tracing";
                              }
                            }  // container prefix
                          }  // container event
    
                          container dynamic-med {
                            description
                              "Dynamic MED Interval";
                            leaf interval {
                              type uint32 {
                                range "0..10";
                              }
                              description
                                "Update generation delay (in minutes) after a MED change";
                            }
                          }  // container dynamic-med
    
                          container weight {
                            description
                              "Define or modify weight";
                            container reset-on-import {
                              presence
                                "Indicates a reset-on-import node is configured.";
                              description
                                "Reset weight of paths on import";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Do not reset weight of paths on import";
                              }  // container disable
                            }  // container reset-on-import
                          }  // container weight
    
                          container as-path-loopcheck {
                            description
                              "Configure AS Path loop checking";
                            container out {
                              description
                                "For outbound updates";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable";
                              }  // container disable
                            }  // container out
                          }  // container as-path-loopcheck
    
                          container global-table-multicast {
                            presence
                              "Indicates a global-table-multicast node is configured.";
                            description
                              "Enable global table multicast";
                          }  // container global-table-multicast
    
                          container segmented-multicast {
                            presence
                              "Indicates a segmented-multicast node is configured.";
                            description
                              "Enable segmented multicast";
                          }  // container segmented-multicast
    
                          container label-security {
                            description
                              "BGP Label Security";
                            container asbr {
                              description
                                "Label Security for ASBR peers";
                              container rpf {
                                presence
                                  "Indicates a rpf node is configured.";
                                description
                                  "RPF Label Security for Option-B";
                              }  // container rpf
                            }  // container asbr
                          }  // container label-security
    
                          container segment-routing {
                            when
                              "../af-name = 'ipv4-unicast' or ../af-name = 'ipv6-unicast'";
                            description
                              "Segment Routing";
                            container srv6 {
                              presence
                                "Indicates a srv6 node is configured.";
                              description
                                "Specify SRv6 configurations";
                              container alloc {
                                description
                                  "SID Allocation";
                                container mode {
                                  description
                                    "SID Allocation mode";
                                  container per-ce {
                                    must
                                      "not(../per-vrf)";
                                    presence
                                      "Indicates a per-ce node is configured.";
                                    description
                                      "Set per CE label mode";
                                  }  // container per-ce
    
                                  container per-vrf {
                                    must
                                      "not(../per-ce)";
                                    presence
                                      "Indicates a per-vrf node is configured.";
                                    description
                                      "Set per VRF label mode";
                                  }  // container per-vrf
                                }  // container mode
                              }  // container alloc
    
                              leaf locator {
                                type string {
                                  length
                                    "1..1024";
                                }
                                description
                                  "Specify locator";
                              }
                            }  // container srv6
                          }  // container segment-routing
                        }  // list address-family
                      }  // container address-families
    
                      container neighbors {
                        description
                          "Specify a neighbor router";
                        list neighbor {
                          key "neighbor-address";
                          description
                            "Neighbor address";
                          leaf neighbor-address {
                            type inet:ip-address-no-zone;
                            description
                              "Neighbor address";
                          }
    
                          container address-families {
                            description
                              "Enter Address Family command mode";
                            list address-family {
                              key "af-name";
                              description
                                "Enter Address Family command mode";
                              leaf af-name {
                                type Bgp-address-family;
                                description
                                  "Enter Address Family command mode";
                              }
    
                              container use {
                                description
                                  "Inherit configuration for this address-family from a group";
                                leaf af-group {
                                  type string {
                                    length
                                      "1..1024";
                                  }
                                  description
                                    "Inherit configuration for this address-family from an af-group";
                                }
                              }  // container use
    
                              container capability {
                                description
                                  "Advertise capability to the peer";
                                container orf {
                                  description
                                    "Advertise ORF capability to the peer";
                                  container prefix {
                                    description
                                      "Advertise address prefix ORF capability to this neighbor";
                                    container receive {
                                      must
                                        "not(../send or ../both or ../none)";
                                      presence
                                        "Indicates a receive node is configured.";
                                      description
                                        "Capability to RECEIVE the ORF from this neighbor";
                                    }  // container receive
    
                                    container send {
                                      must
                                        "not(../receive or ../both or ../none)";
                                      presence
                                        "Indicates a send node is configured.";
                                      description
                                        "Capability to SEND the ORF to this neighbor";
                                    }  // container send
    
                                    container both {
                                      must
                                        "not(../receive or ../send or ../none)";
                                      presence
                                        "Indicates a both node is configured.";
                                      description
                                        "Capability to RECEIVE and SEND the ORF from/to this neighbor";
                                    }  // container both
    
                                    container none {
                                      must
                                        "not(../receive or ../send or ../both)";
                                      presence
                                        "Indicates a none node is configured.";
                                      description
                                        "No capability to RECEIVE or SEND the ORF from/to this neighbor";
                                    }  // container none
                                  }  // container prefix
                                }  // container orf
                              }  // container capability
    
                              container default-originate {
                                presence
                                  "Indicates a default-originate node is configured.";
                                description
                                  "Originate default route to this neighbor";
                                leaf route-policy {
                                  type xr:Route-policy-name;
                                  description
                                    "Route policy to specify criteria to originate default";
                                }
    
                                container inheritance-disable {
                                  must
                                    "not(../route-policy)";
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "Prevent default-originate being inherited from a parent group";
                                }  // container inheritance-disable
                              }  // container default-originate
    
                              container maximum-prefix {
                                presence
                                  "Indicates a maximum-prefix node is configured.";
                                description
                                  "Maximum number of prefixes to accept from this peer";
                                leaf prefix-limit {
                                  type uint32 {
                                    range
                                      "1..4294967295";
                                  }
                                  mandatory
                                    true;
                                  description
                                    "Maximum number of prefixes to accept from this peer";
                                }
    
                                leaf threshold {
                                  type uint32 {
                                    range
                                      "1..100";
                                  }
                                  mandatory
                                    true;
                                  description
                                    "Threshold value (%) at which to generate a warning msg";
                                }
    
                                container warning-only {
                                  presence
                                    "Indicates a warning-only node is configured.";
                                  description
                                    "Only give warning message when limit is exceeded";
                                }  // container warning-only
    
                                leaf restart {
                                  type uint32 {
                                    range
                                      "1..65535";
                                  }
                                  description
                                    "Restart time interval";
                                }
    
                                container discard-extra-paths {
                                  presence
                                    "Indicates a discard-extra-paths node is configured.";
                                  description
                                    "Discard extra paths when limit is exceeded";
                                }  // container discard-extra-paths
                              }  // container maximum-prefix
    
                              leaf optimal-route-reflection {
                                type string {
                                  length "1..32";
                                }
                                description
                                  "Configure optiomal-route-reflection for this neighbor";
                              }
    
                              container next-hop-self {
                                presence
                                  "Indicates a next-hop-self node is configured.";
                                description
                                  "Disable the next hop calculation for this neighbor";
                                container inheritance-disable {
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "Prevent next-hop-self from being inherited from the parent";
                                }  // container inheritance-disable
                              }  // container next-hop-self
    
                              container next-hop-unchanged {
                                presence
                                  "Indicates a next-hop-unchanged node is configured.";
                                description
                                  "Do not overwrite next hop before advertising to eBGP peers";
                                container inheritance-disable {
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "Prevent next-hop-unchanged from being inherited from the parent";
                                }  // container inheritance-disable
                              }  // container next-hop-unchanged
    
                              container slow-peer {
                                description
                                  "configuration commands for slow-peer";
                                container detection {
                                  description
                                    "Enable or disable slow peer detection.";
                                  container enable {
                                    must
                                      "not(../disable) and
    (../split-update-group/static or
     ../split-update-group/dynamic)";
                                    presence
                                      "Indicates a enable node is configured.";
                                    description
                                      "Enable slow peer detection";
                                  }  // container enable
    
                                  container disable {
                                    must
                                      "not(../enable) and
    (../split-update-group/static or
     ../split-update-group/dynamic)";
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable slow peer detection";
                                  }  // container disable
    
                                  container split-update-group {
                                    description
                                      "Options to split update group";
                                    container static {
                                      must
                                        "not(../dynamic) and (../../enable or ../../disable)";
                                      presence
                                        "Indicates a static node is configured.";
                                      description
                                        "Manually move this peer to slow update group";
                                    }  // container static
    
                                    container dynamic {
                                      must
                                        "not(../static) and (../../enable or ../../disable)";
                                      presence
                                        "Indicates a dynamic node is configured.";
                                      description
                                        "Move peer to slow update group on detection";
                                      container permanent {
                                        must
                                          "not(../disable)";
                                        presence
                                          "Indicates a permanent node is configured.";
                                        description
                                          "Do not revert back peer on recovery";
                                      }  // container permanent
    
                                      container disable {
                                        must
                                          "not(../permanent)";
                                        presence
                                          "Indicates a disable node is configured.";
                                        description
                                          "Disable moving slow peer to updgrp";
                                      }  // container disable
                                    }  // container dynamic
                                  }  // container split-update-group
                                }  // container detection
                              }  // container slow-peer
    
                              container origin-as {
                                description
                                  "BGP origin-AS knobs";
                                container validation {
                                  description
                                    "BGP origin-AS validation knobs";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable RPKI origin-AS validation";
                                  }  // container disable
                                }  // container validation
                              }  // container origin-as
    
                              container bestpath {
                                description
                                  "Change default route selection criteria";
                                container origin-as {
                                  description
                                    "BGP origin-AS knobs";
                                  container allow {
                                    description
                                      "BGP origin-AS knobs";
                                    container invalid {
                                      presence
                                        "Indicates a invalid node is configured.";
                                      description
                                        "BGP bestpath selection will allow 'invalid' origin-AS";
                                    }  // container invalid
                                  }  // container allow
                                }  // container origin-as
                              }  // container bestpath
    
                              container route-policy {
                                description
                                  "Apply route policy to neighbor";
                                leaf in {
                                  type xr:Route-policy-name;
                                  description
                                    "Apply route policy to inbound routes";
                                }
    
                                leaf out {
                                  type xr:Route-policy-name;
                                  description
                                    "Apply route policy to outbound routes";
                                }
                              }  // container route-policy
    
                              container orf {
                                description
                                  "Specify ORF and inbound filtering criteria";
                                leaf route-policy {
                                  type xr:Route-policy-name;
                                  description
                                    "Route policy to specify ORF and inbound filter";
                                }
                              }  // container orf
    
                              container remove-private-as {
                                presence
                                  "Indicates a remove-private-as node is configured.";
                                description
                                  "Remove private AS number from outbound updates";
                                container entire-aspath {
                                  must
                                    "not(../inheritance-disable or ../internal)";
                                  presence
                                    "Indicates a entire-aspath node is configured.";
                                  description
                                    "remove only if all ASes in the path are private";
                                }  // container entire-aspath
    
                                container inheritance-disable {
                                  must
                                    "not(../entire-aspath or ../internal)";
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "Prevent remove-private-AS from being inherited from the parent";
                                }  // container inheritance-disable
    
                                container internal {
                                  must
                                    "not(../entire-aspath or ../inheritance-disable)";
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "remove only if all ASes in the path are private";
                                  container inheritance-disable {
                                    presence
                                      "Indicates a inheritance-disable node is configured.";
                                    description
                                      "Prevent remove-private-AS from being inherited from the parent";
                                  }  // container inheritance-disable
                                }  // container internal
                              }  // container remove-private-as
    
                              container remove-private-as-inbound {
                                must
                                  "not(entire-aspath and inheritance-disable)";
                                presence
                                  "Indicates a inbound node is configured.";
                                description
                                  "Remove private AS number from inbound updates";
                                container entire-aspath {
                                  presence
                                    "Indicates a entire-aspath node is configured.";
                                  description
                                    "remove only if all ASes in the path are private";
                                }  // container entire-aspath
    
                                container inheritance-disable {
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "Prevent remove-private-AS from being inherited from the parent";
                                }  // container inheritance-disable
                              }  // container remove-private-as-inbound
    
                              container enforce-multiple-labels {
                                presence
                                  "Indicates a enforce-multiple-labels node is configured.";
                                description
                                  "Enforce support for multiple labels (requires manual session flap)";
                                container inheritance-disable {
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "Prevent enforce-multiple-labels from being inherited from the parent";
                                }  // container inheritance-disable
                              }  // container enforce-multiple-labels
    
                              container route-reflector-client {
                                presence
                                  "Indicates a route-reflector-client node is configured.";
                                description
                                  "Configure a neighbor as Route Reflector client";
                                container inheritance-disable {
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "Prevent route-reflector-client from being inherited from the parent";
                                }  // container inheritance-disable
                              }  // container route-reflector-client
    
                              container accept-route-legacy-rt {
                                presence
                                  "Indicates a accept-route-legacy-rt node is configured.";
                                description
                                  "Configure a neighbor to support legacy PE for RT-Constraint AF";
                                container inheritance-disable {
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "Prevent  accept-route-legacy-RT from being inherited from the parent";
                                }  // container inheritance-disable
                              }  // container accept-route-legacy-rt
    
                              container send-community-ebgp {
                                presence
                                  "Indicates a send-community-ebgp node is configured.";
                                description
                                  "Send community attribute to this external neighbor";
                                container inheritance-disable {
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "Prevent send-community-ebgp from being inherited from the parent";
                                }  // container inheritance-disable
                              }  // container send-community-ebgp
    
                              container send-community-gshut-ebgp {
                                presence
                                  "Indicates a send-community-gshut-ebgp node is configured.";
                                description
                                  "Allow the g-shut community to be sent to this external neighbor";
                                container inheritance-disable {
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "Prevent send-community-gshut-ebgp from being inherited from the parent";
                                }  // container inheritance-disable
                              }  // container send-community-gshut-ebgp
    
                              container send-extended-community-ebgp {
                                presence
                                  "Indicates a send-extended-community-ebgp node is configured.";
                                description
                                  "Send extended community attribute to this external neighbor";
                                container inheritance-disable {
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "Prevent send-extended-community-ebgp from being inherited from parent";
                                }  // container inheritance-disable
                              }  // container send-extended-community-ebgp
    
                              container soft-reconfiguration {
                                description
                                  "Per neighbor soft reconfiguration";
                                container inbound {
                                  presence
                                    "Indicates a inbound node is configured.";
                                  description
                                    "Allow inbound soft reconfiguration for this neighbor";
                                  container rpki-dropped-only {
                                    must
                                      "not(../rpki-tested-only or ../always or ../inheritance-disable)";
                                    presence
                                      "Indicates a rpki-dropped-only node is configured.";
                                    description
                                      "Use soft-reconfig, for paths dropped by route-policy which have RPKI validity state check";
                                  }  // container rpki-dropped-only
    
                                  container rpki-tested-only {
                                    must
                                      "not(../rpki-dropped-only or ../always or ../inheritance-disable)";
                                    presence
                                      "Indicates a rpki-tested-only node is configured.";
                                    description
                                      "Use soft-reconfig for paths tested or dropped by route-policy which have RPKI validity state check";
                                  }  // container rpki-tested-only
    
                                  container always {
                                    must
                                      "not(../rpki-dropped-only or ../rpki-tested-only or ../inheritance-disable)";
                                    presence
                                      "Indicates a always node is configured.";
                                    description
                                      "Always use soft reconfig, even if route refresh is supported";
                                  }  // container always
    
                                  container inheritance-disable {
                                    must
                                      "not(../rpki-dropped-only or ../rpki-tested-only or ../always)";
                                    presence
                                      "Indicates a inheritance-disable node is configured.";
                                    description
                                      "Prevent soft-reconfiguration from being inherited from the parent";
                                  }  // container inheritance-disable
                                }  // container inbound
                              }  // container soft-reconfiguration
    
                              container update {
                                description
                                  "BGP out bound message";
                                container out {
                                  description
                                    "BGP out bound message handling";
                                  container originator-loopcheck {
                                    presence
                                      "Indicates a originator-loopcheck node is configured.";
                                    description
                                      "Loop check for same originator which sent the route";
                                    container disable {
                                      presence
                                        "Indicates a disable node is configured.";
                                      description
                                        "Disable originator loop check";
                                    }  // container disable
                                  }  // container originator-loopcheck
                                }  // container out
                              }  // container update
    
                              container advertise {
                                description
                                  "Per neighbor advertisement options";
                                container permanent-network {
                                  presence
                                    "Indicates a permanent-network node is configured.";
                                  description
                                    "Allow permanent networks for this neighbor";
                                }  // container permanent-network
    
                                container local-labeled-route {
                                  presence
                                    "Indicates a local-labeled-route node is configured.";
                                  description
                                    "Advertisement of routes with local-label";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Do not advertise routes with local-label via Unicast SAFI";
                                  }  // container disable
                                }  // container local-labeled-route
                              }  // container advertise
    
                              leaf weight {
                                type uint32 {
                                  range
                                    "0..65535";
                                }
                                description
                                  "Set default weight for routes from this neighbor";
                              }
    
                              container allowas-in {
                                presence
                                  "Indicates a allowas-in node is configured.";
                                description
                                  "Allow as-path with my AS present in it";
                                leaf number-of-occurences {
                                  type uint32 {
                                    range
                                      "1..10";
                                  }
                                  description
                                    "Number of occurences of AS number";
                                }
                              }  // container allowas-in
    
                              container long-lived-graceful-restart {
                                description
                                  "Enable long lived graceful restart support";
                                container stale-time {
                                  description
                                    "Maximum time to wait before purging long-lived stale routes";
                                  leaf send {
                                    type uint32 {
                                      range
                                        "0..16777215";
                                    }
                                    description
                                      "Stale-time sent in LLGR Capability";
                                  }
    
                                  leaf accept {
                                    type uint32 {
                                      range
                                        "0..16777215";
                                    }
                                    description
                                      "Maximum stale-time acceptable from neighbor";
                                  }
                                }  // container stale-time
    
                                container capable {
                                  presence
                                    "Indicates a capable node is configured.";
                                  description
                                    "Treat neighbor as LLGR capable";
                                }  // container capable
                              }  // container long-lived-graceful-restart
    
                              container as-override {
                                presence
                                  "Indicates a as-override node is configured.";
                                description
                                  "Override matching AS-number while sending update";
                                container inheritance-disable {
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "Prevent as-override from being inherited from the parent";
                                }  // container inheritance-disable
                              }  // container as-override
    
                              container aigp {
                                presence
                                  "Indicates a aigp node is configured.";
                                description
                                  "Enable AIGP for this neighbor ";
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable AIGP";
                                }  // container disable
                              }  // container aigp
    
                              container aigp-send {
                                description
                                  "Copy AIGP";
                                container cost-community {
                                  description
                                    "Send AIGP value in Cost Community";
                                  leaf cost-community-id {
                                    type uint32 {
                                      range
                                        "0..255";
                                    }
                                    must
                                      "not(../disable)";
                                    description
                                      "Cost community ID";
                                  }
    
                                  container poi {
                                    must
                                      "(igp-cost or pre-bestpath) and not(igp-cost and pre-bestpath)";
                                    presence
                                      "Indicates a poi node is configured.";
                                    description
                                      "Point of insertion for bestpath calculation";
                                    container igp-cost {
                                      presence
                                        "Indicates a igp-cost node is configured.";
                                      description
                                        "Cost community is used after IGP distance to next hop";
                                      container transitive {
                                        presence
                                          "Indicates a transitive node is configured.";
                                        description
                                          "Enable transitive cost community";
                                      }  // container transitive
                                    }  // container igp-cost
    
                                    container pre-bestpath {
                                      presence
                                        "Indicates a pre-bestpath node is configured.";
                                      description
                                        "Cost community is first step in best path calculation";
                                      container transitive {
                                        presence
                                          "Indicates a transitive node is configured.";
                                        description
                                          "Enable transitive cost community";
                                      }  // container transitive
                                    }  // container pre-bestpath
                                  }  // container poi
    
                                  container disable {
                                    must
                                      "not(../cost-community-id)";
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable aigp send cost-community";
                                  }  // container disable
                                }  // container cost-community
    
                                container med {
                                  presence
                                    "Indicates a med node is configured.";
                                  description
                                    "Send AIGP value in MED";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable aigp send med";
                                  }  // container disable
                                }  // container med
                              }  // container aigp-send
    
                              container validation {
                                when
                                  "../af-name = 'ipv4-flowspec' or ../af-name = 'ipv6-flowspec'";
                                presence
                                  "Indicates a validation node is configured.";
                                description
                                  "Flowspec Validation for this neighbor ";
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable Flowspec Validation";
                                }  // container disable
    
                                container redirect {
                                  description
                                    "Flowspec Redirect nexthop Validation";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable Flowspec Redirect nexthop Validation";
                                  }  // container disable
                                }  // container redirect
                              }  // container validation
    
                              container send-multicast-attributes {
                                when
                                  "../af-name = 'ipv4-unicast' or ../af-name = 'ipv6-unicast' or ../af-name = 'ipv4-labeled-unicast' or ../af-name = 'ipv6-labeled-unicast' or ../af-name = 'ipv4-multicast' or ../af-name = 'ipv6-multicast' or ../af-name = 'ipv4-mvpn' or ../af-name = 'ipv6-mvpn'";
                                presence
                                  "Indicates a send-multicast-attributes node is configured.";
                                description
                                  "Send multicast attributes to this neighbor ";
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable send multicast attribute";
                                }  // container disable
                              }  // container send-multicast-attributes
    
                              container signalling {
                                description
                                  "Signalling protocols to disable, BGP or LDP";
                                container bgp {
                                  description
                                    "Select BGP to disable";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable Signalling type";
                                  }  // container disable
                                }  // container bgp
    
                                container ldp {
                                  description
                                    "Select LDP to disable";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable Signalling type";
                                  }  // container disable
                                }  // container ldp
                              }  // container signalling
    
                              container accept-own {
                                presence
                                  "Indicates a accept-own node is configured.";
                                description
                                  "Handle self-originated routes with Accept-Own community";
                                container inheritance-disable {
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "Prevent item being inherited from a parent group";
                                }  // container inheritance-disable
                              }  // container accept-own
    
                              container cluster-id {
                                description
                                  "Allow routes with first cluster-id in list is same as the router's cluster id";
                                container allow-equal {
                                  presence
                                    "Indicates a allow-equal node is configured.";
                                  description
                                    "Accept routes with first cluster-id in list is same as the router's cluster id";
                                  container disable {
                                    presence
                                      "Indicates a allow-equal node is configured.";
                                    description
                                      "Prevent the configuration from being inherited.";
                                  }  // container disable
                                }  // container allow-equal
                              }  // container cluster-id
    
                              container site-of-origin {
                                description
                                  "Site-of-Origin extended community associated with the neighbor";
                                container two-byte-as {
                                  must
                                    "not(../four-byte-as or ../ip-address)";
                                  presence
                                    "Indicates a two-byte-as node is configured.";
                                  leaf as-number {
                                    type xr:Bgp-as-number;
                                    mandatory
                                      true;
                                    description
                                      "bgp as-number";
                                  }
    
                                  leaf index {
                                    type uint32 {
                                      range
                                        "0..4294967295";
                                    }
                                    mandatory
                                      true;
                                    description
                                      "ASN2:index (hex or decimal format)";
                                  }
                                }  // container two-byte-as
    
                                container four-byte-as {
                                  must
                                    "not(../two-byte-as or ../ip-address)";
                                  presence
                                    "Indicates a four-byte-as node is configured.";
                                  leaf as-number {
                                    type xr:Bgp-as-number;
                                    mandatory
                                      true;
                                    description
                                      "4-byte AS number";
                                  }
    
                                  leaf index {
                                    type uint32 {
                                      range
                                        "0..4294967295";
                                    }
                                    mandatory
                                      true;
                                    description
                                      "ASN2:index (hex or decimal format)";
                                  }
                                }  // container four-byte-as
    
                                container ip-address {
                                  must
                                    "not(../two-byte-as or ../four-byte-as)";
                                  presence
                                    "Indicates a ip-address node is configured.";
                                  description
                                    "configure this node";
                                  leaf ipv4-address {
                                    type inet:ipv4-address-no-zone;
                                    mandatory
                                      true;
                                    description
                                      "configure this node";
                                  }
    
                                  leaf index {
                                    type uint32 {
                                      range
                                        "0..65535";
                                    }
                                    mandatory
                                      true;
                                    description
                                      "IPv4Address:index (hex or decimal format)";
                                  }
                                }  // container ip-address
                              }  // container site-of-origin
    
                              container multipath {
                                presence
                                  "Indicates a multipath node is configured.";
                                description
                                  "Paths from this neighbor is eligible for multipath";
                              }  // container multipath
                            }  // list address-family
                          }  // container address-families
    
                          container update {
                            description
                              "BGP Update configuration";
                            container in {
                              description
                                "Inbound update message handling";
                              container filtering {
                                presence
                                  "Indicates a filtering node is configured.";
                                description
                                  "Inbound update message filtering";
                                container message {
                                  description
                                    "Filtered update messages";
                                  container buffers {
                                    presence
                                      "Indicates a buffers node is configured.";
                                    description
                                      "Filtered update message buffers";
                                    leaf number-of-buffers {
                                      type uint32 {
                                        range
                                          "0..25";
                                      }
                                      mandatory
                                        true;
                                      description
                                        "Filtered update message buffers";
                                    }
    
                                    container non-circular {
                                      presence
                                        "Indicates a non-circular node is configured.";
                                      description
                                        "Message buffer list is not circular";
                                    }  // container non-circular
                                  }  // container buffers
                                }  // container message
    
                                container logging {
                                  description
                                    "Update filtering syslog message";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable update filtering syslog message";
                                  }  // container disable
                                }  // container logging
    
                                container attribute-filter {
                                  description
                                    "Attribute-filter configuration";
                                  leaf group {
                                    type string {
                                      length
                                        "1..1024";
                                    }
                                    description
                                      "Attribute-filter group configuration";
                                  }
                                }  // container attribute-filter
                              }  // container filtering
    
                              container merge {
                                description
                                  "Merge incoming updates";
                                container safi {
                                  description
                                    "SAFI of the NLRIs to merge";
                                  container unicast {
                                    description
                                      "IPv4/IPv6 unicast paths";
                                    container labeled-unicast {
                                      presence
                                        "Indicates a labeled-unicast node is configured.";
                                      description
                                        "IPv4/IPv6 labeled-unicast paths";
                                      container inheritance-disable {
                                        presence
                                          "Indicates a inheritance-disable node is configured.";
                                        description
                                          "Do not inherit this configuration from parent group";
                                      }  // container inheritance-disable
                                    }  // container labeled-unicast
                                  }  // container unicast
                                }  // container safi
                              }  // container merge
                            }  // container in
                          }  // container update
    
                          container graceful-maintenance {
                            presence
                              "Indicates a graceful-maintenance node is configured.";
                            description
                              "Attributes for Graceful Maintenance. This will cause
    neig de-prer routes from this router and
    choonates.his allows the router to be
    brour out  service gracefully.";
                            container local-preference {
                              must
                                "local-preference-value or inheritance-disable";
                              presence
                                "Indicates a local-preference node is configured.";
                              description
                                "local preference with which to advertise routes to ibgps. Deflt=No Touch";
                              leaf local-preference-value {
                                type uint32 {
                                  range
                                    "0..4294967295";
                                }
                                description
                                  "Range of values for Local Preference";
                              }
    
                              container inheritance-disable {
                                presence
                                  "Indicates a inheritance-disable node is configured.";
                                description
                                  "Prevent local preference from being inherited from the parent";
                              }  // container inheritance-disable
                            }  // container local-preference
    
                            container as-prepends {
                              must
                                "number-of-as-prepends or inheritance-disable";
                              presence
                                "Indicates a as-prepends node is configured.";
                              description
                                "Number of times to prepend the local AS number to the
    AS poutes.efault=0";
                              leaf number-of-as-prepends {
                                type uint32 {
                                  range "0..6";
                                }
                                description
                                  "Range of number of AS prepends";
                              }
    
                              container inheritance-disable {
                                presence
                                  "Indicates a inheritance-disable node is configured.";
                                description
                                  "Prevent AS prepends from being inherited from the parent";
                              }  // container inheritance-disable
                            }  // container as-prepends
    
                            container activate {
                              presence
                                "Indicates a activate node is configured.";
                              description
                                "Routes will be announced with the graceful maintenance
    attrhile aivated either here or under router
    bgp ation.hile activated, all routes to this
    neigl be aounced with the attributes
    confere anall routes from this neighbor will
    be a to otr neighbors with the graceful
    mainattribes configured under those
    neighe g-st community will be announced
    regaf the her attributes configured here. To
    alloshut cmunity to be announced to ebgp
    neighe sencommunity-gshut-ebgp configuration
    is aired. te: changes to the attributes will
    not ect whe activated.";
                              container inheritance-disable {
                                presence
                                  "Indicates a inheritance-disable node is configured.";
                                description
                                  "Prevent activate from being inherited from the parent";
                              }  // container inheritance-disable
                            }  // container activate
                          }  // container graceful-maintenance
    
                          leaf remote-as {
                            type xr:Bgp-as-number;
                            description
                              "bgp as-number";
                          }
    
                          leaf remote-as-list {
                            type string {
                              length "1..1024";
                            }
                            description
                              "Remote as-list configuration";
                          }
    
                          container use {
                            description
                              "Inherit configuration from a group";
                            leaf session-group {
                              type string {
                                length "1..1024";
                              }
                              description
                                "Inherit address-family independent config from a session-group";
                            }
    
                            leaf neighbor-group {
                              type string {
                                length "1..1024";
                              }
                              description
                                "Inherit configuration from a neighbor-group";
                            }
                          }  // container use
    
                          container advertisement-interval {
                            presence
                              "Indicates a advertisement-interval node is configured.";
                            description
                              "Minimum interval between sending BGP routing updates";
                            leaf time-in-seconds {
                              type uint32 {
                                range "0..600";
                              }
                              mandatory true;
                              description
                                "Minimum interval between sending BGP routing updates";
                            }
    
                            leaf time-in-milliseconds {
                              type uint32 {
                                range "0..999";
                              }
                              description
                                "time in milliseconds";
                            }
                          }  // container advertisement-interval
    
                          leaf description {
                            type string {
                              length "1..1024";
                            }
                            description
                              "Neighbor specific description";
                          }
    
                          container ignore-connected-check {
                            presence
                              "Indicates a ignore-connected-check node is configured.";
                            description
                              "Bypass the directly connected nexthop check for single-hop eBGP peering";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent ignore-connected-check from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container ignore-connected-check
    
                          container internal-vpn-client {
                            presence
                              "Indicates a internal-vpn-client node is configured.";
                            description
                              "Preserve iBGP CE neighbor path in ATTR_SET across VPN core";
                          }  // container internal-vpn-client
    
                          container ebgp-multihop {
                            presence
                              "Indicates a ebgp-multihop node is configured.";
                            description
                              "Allow EBGP neighbors not on directly connected networks";
                            leaf maximum-hop-count {
                              type uint32 {
                                range "1..255";
                              }
                              mandatory true;
                              description
                                "maximum hop count";
                            }
    
                            container mpls {
                              presence
                                "Indicates a mpls node is configured.";
                              description
                                "Disable BGP MPLS forwarding";
                            }  // container mpls
                          }  // container ebgp-multihop
    
                          container tcp {
                            description
                              "TCP session configuration commands";
                            container mss {
                              must
                                "initial-mss or inheritance-disable";
                              presence
                                "Indicates a mss node is configured.";
                              description
                                "Maximum Segment Size";
                              leaf initial-mss {
                                type uint32 {
                                  range
                                    "68..10000";
                                }
                                description
                                  "TCP initial maximum segment size";
                              }
    
                              container inheritance-disable {
                                presence
                                  "Indicates a inheritance-disable node is configured.";
                                description
                                  "Prevent tcp mss from being inherited from the parent";
                              }  // container inheritance-disable
                            }  // container mss
                          }  // container tcp
    
                          container bmp-activate {
                            description
                              "Enable BMP logging for this neighbor";
                            container servers {
                              description
                                "Enable BMP connection to particular server";
                              list server {
                                key "server-id";
                                description
                                  "Enable BMP connection to particular server";
                                leaf server-id {
                                  type uint32 {
                                    range "1..8";
                                  }
                                  description
                                    "Enable BMP connection to particular server";
                                }
                              }  // list server
                            }  // container servers
                          }  // container bmp-activate
    
                          container bfd {
                            description
                              "Configure BFD parameters";
                            container fast-detect {
                              must
                                "not(strict-mode and disable)";
                              presence
                                "Indicates a fast-detect node is configured.";
                              description
                                "Enable Fast detection";
                              container strict-mode {
                                presence
                                  "Indicates a strict-mode node is configured.";
                                description
                                  "Hold down neighbor session until BFD session is up";
                              }  // container strict-mode
    
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Prevent bfd settings from being inherited from the parent";
                              }  // container disable
                            }  // container fast-detect
    
                            leaf minimum-interval {
                              type uint32 {
                                range "3..30000";
                              }
                              description
                                "Hello interval";
                            }
    
                            leaf multiplier {
                              type uint32 {
                                range "2..16";
                              }
                              description
                                "Detect multiplier";
                            }
                          }  // container bfd
    
                          container keychain {
                            must
                              "name or inheritance-disable";
                            presence
                              "Indicates a keychain node is configured.";
                            description
                              "Set keychain based authentication";
                            leaf name {
                              type string {
                                length "1..32";
                              }
                              description
                                "Name of the key chain - maximum 32 characters";
                            }
    
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent keychain from being inherited from parent";
                            }  // container inheritance-disable
                          }  // container keychain
    
                          container local-as {
                            must
                              "as-number or inheritance-disable";
                            presence
                              "Indicates a local-as node is configured.";
                            description
                              "Specify local AS number";
                            leaf as-number {
                              type xr:Bgp-as-number;
                              description
                                "bgp as-number";
                            }
    
                            container no-prepend {
                              presence
                                "Indicates a no-prepend node is configured.";
                              description
                                "Do not prepend local AS to announcements from this neighbor";
                              container replace-as {
                                presence
                                  "Indicates a replace-as node is configured.";
                                description
                                  "Prepend only local AS to announcements to this neighbor";
                                container dual-as {
                                  presence
                                    "Indicates a dual-as node is configured.";
                                  description
                                    "Dual-AS mode";
                                }  // container dual-as
                              }  // container replace-as
                            }  // container no-prepend
    
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent local AS from being inherited from parent";
                            }  // container inheritance-disable
                          }  // container local-as
    
                          container password {
                            must
                              "encrypted or inheritance-disable";
                            presence
                              "Indicates a password node is configured.";
                            description
                              "Set a password";
                            leaf encrypted {
                              type xr:Proprietary-password;
                              description
                                "Specifies an ENCRYPTED password will follow";
                            }
    
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent password from being inherited from parent";
                            }  // container inheritance-disable
                          }  // container password
    
                          container receive-buffer-size {
                            presence
                              "Indicates a receive-buffer-size node is configured.";
                            description
                              "Set socket and BGP receive buffer size";
                            leaf receive-socket-buffer-size {
                              type uint32 {
                                range
                                  "512..131072";
                              }
                              mandatory true;
                              description
                                "Set socket and BGP receive buffer size";
                            }
    
                            leaf bgp-read-buffer-size {
                              type uint32 {
                                range
                                  "512..131072";
                              }
                              description
                                "BGP Read buffer size in bytes";
                            }
                          }  // container receive-buffer-size
    
                          container send-buffer-size {
                            presence
                              "Indicates a send-buffer-size node is configured.";
                            description
                              "Set socket and BGP send buffer size";
                            leaf send-socket-buffer-size {
                              type uint32 {
                                range
                                  "4096..131072";
                              }
                              mandatory true;
                              description
                                "Set socket and BGP send buffer size";
                            }
    
                            leaf bgp-write-buffer-size {
                              type uint32 {
                                range
                                  "4096..131072";
                              }
                              description
                                "BGP Write buffer size in bytes";
                            }
                          }  // container send-buffer-size
    
                          container shutdown {
                            presence
                              "Indicates a shutdown node is configured.";
                            description
                              "Administratively shut down this neighbor";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent this neighbor being shutdown, even if its parent is";
                            }  // container inheritance-disable
                          }  // container shutdown
    
                          container timers {
                            presence
                              "Indicates a timers node is configured.";
                            description
                              "BGP per neighbor timers";
                            leaf keepalive-interval {
                              type uint32 {
                                range "0..65535";
                              }
                              mandatory true;
                              description
                                "BGP timers";
                            }
    
                            leaf holdtime {
                              type union {
                                type uint32 {
                                  range "0";
                                }
                                type uint32 {
                                  range
                                    "3..65535";
                                }
                              }
                              mandatory true;
                              description
                                "Holdtime. Set 0 to disable keepalives/hold time.";
                            }
    
                            leaf minimum-acceptable-holdtime {
                              type union {
                                type uint32 {
                                  range "0";
                                }
                                type uint32 {
                                  range
                                    "3..65535";
                                }
                              }
                              description
                                "Minimum acceptable holdtime from neighbor. Set 0 to disable keepalives/hold time.";
                            }
                          }  // container timers
    
                          container local {
                            description
                              "Configure local parameter";
                            container address {
                              must
                                "ip-address or inheritance-disable";
                              presence
                                "Indicates a address node is configured.";
                              description
                                "use configured local address for bgp peering";
                              leaf ip-address {
                                type inet:ip-address-no-zone;
                                description
                                  "IPv4 address";
                              }
    
                              container inheritance-disable {
                                presence
                                  "Indicates a inheritance-disable node is configured.";
                                description
                                  "Prevent local address from being inherited from parent";
                              }  // container inheritance-disable
                            }  // container address
                          }  // container local
    
                          container log {
                            description
                              "Logging update messages per neighbor";
                            container message {
                              description
                                "Logging update/notification messages per neighbor";
                              container in {
                                description
                                  "Inbound log messages";
                                leaf message-log-buffer-size {
                                  type uint32 {
                                    range
                                      "1..500";
                                  }
                                  description
                                    "Range for message log buffer size";
                                }
    
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable inbound message logging";
                                }  // container disable
    
                                container inheritance-diable {
                                  presence
                                    "Indicates a inheritance-diable node is configured.";
                                  description
                                    "Prevents the msg log from being inherited from the parent";
                                }  // container inheritance-diable
                              }  // container in
    
                              container out {
                                description
                                  "Outbound log messages";
                                leaf range-for-message-log-buffer {
                                  type uint32 {
                                    range
                                      "1..100";
                                  }
                                  description
                                    "Range for message log buffer size";
                                }
    
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable outbound message logging";
                                }  // container disable
    
                                container inheritance-diable {
                                  presence
                                    "Indicates a inheritance-diable node is configured.";
                                  description
                                    "Prevents the msg log from being inherited from the parent";
                                }  // container inheritance-diable
                              }  // container out
                            }  // container message
                          }  // container log
    
                          leaf update-source {
                            type xr:Interface-name;
                            description
                              "Source of routing updates";
                          }
    
                          container local-address-subnet {
                            description
                              "Local address subnet of routing updates";
                            leaf ip-address {
                              type inet:ip-address-no-zone;
                              description
                                "IP address and mask or masklength";
                            }
    
                            leaf mask-length {
                              type uint32 {
                                range "0..128";
                              }
                              description
                                "IP address and mask length";
                            }
                          }  // container local-address-subnet
    
                          container dmz-link-bandwidth {
                            presence
                              "Indicates a dmz-link-bandwidth node is configured.";
                            description
                              "Propagate the DMZ link bandwidth";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent dmz-link-bandwidth from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container dmz-link-bandwidth
    
                          container ebgp-recv-extcommunity-dmz {
                            presence
                              "Indicates a ebgp-recv-extcommunity-dmz node is configured.";
                            description
                              "Receive extcommunity dmz link bandwidth from ebgp neighbor";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent ebgp-send-community-dmz from being inherited from parent";
                            }  // container inheritance-disable
                          }  // container ebgp-recv-extcommunity-dmz
    
                          container ebgp-send-extcommunity-dmz {
                            must
                              "not(cumulative and inheritance-disable)";
                            presence
                              "Indicates a ebgp-send-extcommunity-dmz node is configured.";
                            description
                              "Send extended community dmz link bandwidth to ebgp neighbor";
                            container cumulative {
                              presence
                                "Indicates a cumulative node is configured.";
                              description
                                "Send cumulative community dmz link bandwidth of all multipaths to ebgp neighbor";
                            }  // container cumulative
    
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent ebgp-send-extcommunity-dmz from being inherited from parent";
                            }  // container inheritance-disable
                          }  // container ebgp-send-extcommunity-dmz
    
                          container ttl-security {
                            presence
                              "Indicates a ttl-security node is configured.";
                            description
                              "Enable EBGP TTL security";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent ttl-security from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container ttl-security
    
                          container session-open-mode {
                            description
                              "Establish BGP session using this TCP open mode";
                            container active-only {
                              must
                                "not(../passive-only or ../both)";
                              presence
                                "Indicates a active-only node is configured.";
                              description
                                "Active only";
                            }  // container active-only
    
                            container passive-only {
                              must
                                "not(../active-only or ../both)";
                              presence
                                "Indicates a passive-only node is configured.";
                              description
                                "Passive only";
                            }  // container passive-only
    
                            container both {
                              must
                                "not(../active-only or ../passive-only)";
                              presence
                                "Indicates a both node is configured.";
                              description
                                "Prevent session-open-mode being inherited from the parent";
                            }  // container both
                          }  // container session-open-mode
    
                          leaf dscp {
                            type enumeration {
                              enum "default" {
                                value 0;
                                description
                                  "Set packets with default dscp (000000)";
                              }
                              enum "cs1" {
                                value 8;
                                description
                                  "Set packets with CS1(precedence 1) dscp (001000)";
                              }
                              enum "af11" {
                                value 10;
                                description
                                  "Set packets with AF11 dscp (001010)";
                              }
                              enum "af12" {
                                value 12;
                                description
                                  "Set packets with AF12 dscp (001100)";
                              }
                              enum "af13" {
                                value 14;
                                description
                                  "Set packets with AF13 dscp (001110)";
                              }
                              enum "cs2" {
                                value 16;
                                description
                                  "Set packets with CS2(precedence 2) dscp (010000)";
                              }
                              enum "af21" {
                                value 18;
                                description
                                  "Set packets with AF21 dscp (010010)";
                              }
                              enum "af22" {
                                value 20;
                                description
                                  "Set packets with AF22 dscp (010100)";
                              }
                              enum "af23" {
                                value 22;
                                description
                                  "Set packets with AF23 dscp (010110)";
                              }
                              enum "cs3" {
                                value 24;
                                description
                                  "Set packets with CS3(precedence 3) dscp (011000)";
                              }
                              enum "af31" {
                                value 26;
                                description
                                  "Set packets with AF31 dscp (011010)";
                              }
                              enum "af32" {
                                value 28;
                                description
                                  "Set packets with AF32 dscp (011100)";
                              }
                              enum "af33" {
                                value 30;
                                description
                                  "Set packets with AF33 dscp (011110)";
                              }
                              enum "cs4" {
                                value 32;
                                description
                                  "Set packets with CS4(precedence 4) dscp (100000)";
                              }
                              enum "af41" {
                                value 34;
                                description
                                  "Set packets with AF41 dscp (100010)";
                              }
                              enum "af42" {
                                value 36;
                                description
                                  "Set packets with AF42 dscp (100100)";
                              }
                              enum "af43" {
                                value 38;
                                description
                                  "Set packets with AF43 dscp (100110)";
                              }
                              enum "cs5" {
                                value 40;
                                description
                                  "Set packets with CS5(precedence 5) dscp (101000)";
                              }
                              enum "ef" {
                                value 46;
                                description
                                  "Set packets with EF dscp (101110)";
                              }
                              enum "cs6" {
                                value 48;
                                description
                                  "Set packets with CS6(precedence 6) dscp (110000)";
                              }
                              enum "cs7" {
                                value 56;
                                description
                                  "Set packets with CS7(precedence 7) dscp (111000)";
                              }
                            }
                            description
                              "Set IP DSCP (DiffServ CodePoint)";
                          }
    
                          leaf precedence {
                            type enumeration {
                              enum "routine" {
                                value 0;
                                description
                                  "Set packets with routine precedence (0)";
                              }
                              enum "priority" {
                                value 1;
                                description
                                  "Set packets with priority precedence (1)";
                              }
                              enum "immediate" {
                                value 2;
                                description
                                  "Set packets with immediate precedence (2)";
                              }
                              enum "flash" {
                                value 3;
                                description
                                  "Set packets with flash precedence (3)";
                              }
                              enum
                                "flash-override" {
                                value 4;
                                description
                                  "Set packets with flash override precedence (4)";
                              }
                              enum "critical" {
                                value 5;
                                description
                                  "Set packets with critical precedence (5)";
                              }
                              enum "internet" {
                                value 6;
                                description
                                  "Set packets with internetwork control precedence (6)";
                              }
                              enum "network" {
                                value 7;
                                description
                                  "Set packets with network control precedence (7)";
                              }
                            }
                            description
                              "Set precedence";
                          }
    
                          container capability {
                            description
                              "Advertise capability to the peer";
                            container suppress {
                              description
                                "Suppress advertising capability to the peer ";
                              container four-byte-as {
                                presence
                                  "Indicates a four-byte-as node is configured.";
                                description
                                  "4-byte-as capability";
                                container inheritance-disable {
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "Prevent capability suppress 4-type-as being inherited from the parent";
                                }  // container inheritance-disable
                              }  // container four-byte-as
    
                              container all {
                                presence
                                  "Indicates a all node is configured.";
                                description
                                  "All capabilities";
                                container inheritance-disable {
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "Do not inherit this configuration from parent group";
                                }  // container inheritance-disable
                              }  // container all
    
                              container extended-nexthop-encoding {
                                presence
                                  "Indicates a extended-nexthop-encoding node is configured.";
                                description
                                  "Extended-nexthop-encoding capabilities (IETF RFC 5549)";
                                container inheritance-disable {
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "Do not inherit this configuration from parent group";
                                }  // container inheritance-disable
                              }  // container extended-nexthop-encoding
                            }  // container suppress
    
                            container additional-paths {
                              description
                                "Additional paths capability";
                              container send {
                                presence
                                  "Indicates a send node is configured.";
                                description
                                  "Additional paths Send capability";
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Do not advertise additional paths Send capability";
                                }  // container disable
                              }  // container send
    
                              container receive {
                                presence
                                  "Indicates a receive node is configured.";
                                description
                                  "Additional paths Receive capability";
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Do not advertise additional paths Receive capability";
                                }  // container disable
                              }  // container receive
                            }  // container additional-paths
                          }  // container capability
    
                          container graceful-restart {
                            presence
                              "Indicates a graceful-restart node is configured.";
                            description
                              "Enable graceful restart support for this neighbor";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable graceful restart support for this neighbor";
                            }  // container disable
    
                            leaf restart-time {
                              type uint32 {
                                range "1..4095";
                              }
                              description
                                "Restart time advertised to the neighbor";
                            }
    
                            leaf stalepath-time {
                              type uint32 {
                                range "1..4095";
                              }
                              description
                                "Maximum time to wait for restart of GR capable peer";
                            }
                          }  // container graceful-restart
    
                          container enforce-first-as {
                            presence
                              "Indicates a enforce-first-as node is configured.";
                            description
                              "Enforce the first AS for EBGP routes";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Do not enforce the first AS for EBGP routes";
                            }  // container disable
                          }  // container enforce-first-as
    
                          container enforce-first-as-disable {
                            presence
                              "Indicates a enforce-first-as-disable node is configured.";
                            description
                              "Do not enforce the first AS for EBGP routes";
                          }  // container enforce-first-as-disable
    
                          leaf maximum-peers {
                            type uint32 {
                              range "1..4095";
                            }
                            description
                              "Maximum dynamic neighbors";
                          }
    
                          leaf idle-watch-time {
                            type uint32 {
                              range "30..1800";
                            }
                            description
                              "Maximum time to wait for deletion of IDLE state dynamic peer";
                          }
    
                          container egress-engineering {
                            presence
                              "Indicates a egress-engineering node is configured.";
                            description
                              "Enable egress peer engineering for this neighbor";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Do not inherit egress-engineering from the parent";
                            }  // container inheritance-disable
                          }  // container egress-engineering
    
                          container peer-sets {
                            description
                              "Assign this neighbor to a peer-set used for egress peer engineering";
                            list peer-set {
                              key "peer-set-id";
                              description
                                "Assign this neighbor to a peer-set used for egress peer engineering";
                              leaf peer-set-id {
                                type uint32 {
                                  range "1..255";
                                }
                                description
                                  "Assign this neighbor to a peer-set used for egress peer engineering";
                              }
                            }  // list peer-set
                          }  // container peer-sets
    
                          container peer-node-sid {
                            description
                              "Assign this neighbor a manual SID for egress peer engineering";
                            leaf index {
                              type uint32 {
                                range
                                  "0..1033575";
                              }
                              description
                                "Segment Index value which is offset of SRLB";
                            }
                          }  // container peer-node-sid
    
                          container ao {
                            description
                              "Enable Authentiation Option";
                            leaf key-chain-name {
                              type string {
                                length "1..32";
                              }
                              must
                                "not(../inheritance-disable) and (../include-tcp-options/enable or ../include-tcp-options/disable)";
                              description
                                "Name of the key chain - maximum 32 characters";
                            }
    
                            container include-tcp-options {
                              description
                                "Include/Exclude other TCP options in the header";
                              container enable {
                                must
                                  "not(../disable or ../../inheritance-disable)";
                                presence
                                  "Indicates a enable node is configured.";
                                description
                                  "Include other TCP options in the header";
                              }  // container enable
    
                              container disable {
                                must
                                  "not(../enable or ../../inheritance-disable)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Exclude other TCP options in the header";
                              }  // container disable
    
                              container accept-ao-mismatch-connection {
                                must
                                  "../enable or ../disable";
                                presence
                                  "Indicates a accept-ao-mismatch-connection node is configured.";
                                description
                                  "Accept new connection even if AO mismatched";
                              }  // container accept-ao-mismatch-connection
                            }  // container include-tcp-options
    
                            container inheritance-disable {
                              must
                                "not(../key-chain-name)";
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent keychain from being inherited from parent";
                            }  // container inheritance-disable
                          }  // container ao
    
                          container origin-as {
                            description
                              "BGP origin-AS knobs";
                            container validation {
                              description
                                "BGP origin-AS validation knobs";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable RPKI origin-AS validation";
                              }  // container disable
                            }  // container validation
                          }  // container origin-as
    
                          container bestpath {
                            description
                              "Change default route selection criteria";
                            container origin-as {
                              description
                                "BGP origin-AS knobs";
                              container allow {
                                description
                                  "BGP origin-AS knobs";
                                container invalid {
                                  presence
                                    "Indicates a invalid node is configured.";
                                  description
                                    "BGP bestpath selection will allow 'invalid' origin-AS";
                                }  // container invalid
                              }  // container allow
                            }  // container origin-as
                          }  // container bestpath
                        }  // list neighbor
    
                        list neighbor-range {
                          key "neighbor-address prefix-length";
                          description
                            "Neighbor address";
                          leaf neighbor-address {
                            type inet:ip-address-no-zone;
                            description
                              "Neighbor address";
                          }
    
                          leaf prefix-length {
                            type uint32 {
                              range "0..127";
                            }
                            description
                              "Prefix length";
                          }
    
                          container address-families {
                            description
                              "Enter Address Family command mode";
                            list address-family {
                              key "af-name";
                              description
                                "Enter Address Family command mode";
                              leaf af-name {
                                type Bgp-address-family;
                                description
                                  "Enter Address Family command mode";
                              }
    
                              container use {
                                description
                                  "Inherit configuration for this address-family from a group";
                                leaf af-group {
                                  type string {
                                    length
                                      "1..1024";
                                  }
                                  description
                                    "Inherit configuration for this address-family from an af-group";
                                }
                              }  // container use
    
                              container capability {
                                description
                                  "Advertise capability to the peer";
                                container orf {
                                  description
                                    "Advertise ORF capability to the peer";
                                  container prefix {
                                    description
                                      "Advertise address prefix ORF capability to this neighbor";
                                    container receive {
                                      must
                                        "not(../send or ../both or ../none)";
                                      presence
                                        "Indicates a receive node is configured.";
                                      description
                                        "Capability to RECEIVE the ORF from this neighbor";
                                    }  // container receive
    
                                    container send {
                                      must
                                        "not(../receive or ../both or ../none)";
                                      presence
                                        "Indicates a send node is configured.";
                                      description
                                        "Capability to SEND the ORF to this neighbor";
                                    }  // container send
    
                                    container both {
                                      must
                                        "not(../receive or ../send or ../none)";
                                      presence
                                        "Indicates a both node is configured.";
                                      description
                                        "Capability to RECEIVE and SEND the ORF from/to this neighbor";
                                    }  // container both
    
                                    container none {
                                      must
                                        "not(../receive or ../send or ../both)";
                                      presence
                                        "Indicates a none node is configured.";
                                      description
                                        "No capability to RECEIVE or SEND the ORF from/to this neighbor";
                                    }  // container none
                                  }  // container prefix
                                }  // container orf
                              }  // container capability
    
                              container default-originate {
                                presence
                                  "Indicates a default-originate node is configured.";
                                description
                                  "Originate default route to this neighbor";
                                leaf route-policy {
                                  type xr:Route-policy-name;
                                  description
                                    "Route policy to specify criteria to originate default";
                                }
    
                                container inheritance-disable {
                                  must
                                    "not(../route-policy)";
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "Prevent default-originate being inherited from a parent group";
                                }  // container inheritance-disable
                              }  // container default-originate
    
                              container maximum-prefix {
                                presence
                                  "Indicates a maximum-prefix node is configured.";
                                description
                                  "Maximum number of prefixes to accept from this peer";
                                leaf prefix-limit {
                                  type uint32 {
                                    range
                                      "1..4294967295";
                                  }
                                  mandatory
                                    true;
                                  description
                                    "Maximum number of prefixes to accept from this peer";
                                }
    
                                leaf threshold {
                                  type uint32 {
                                    range
                                      "1..100";
                                  }
                                  mandatory
                                    true;
                                  description
                                    "Threshold value (%) at which to generate a warning msg";
                                }
    
                                container warning-only {
                                  presence
                                    "Indicates a warning-only node is configured.";
                                  description
                                    "Only give warning message when limit is exceeded";
                                }  // container warning-only
    
                                leaf restart {
                                  type uint32 {
                                    range
                                      "1..65535";
                                  }
                                  description
                                    "Restart time interval";
                                }
    
                                container discard-extra-paths {
                                  presence
                                    "Indicates a discard-extra-paths node is configured.";
                                  description
                                    "Discard extra paths when limit is exceeded";
                                }  // container discard-extra-paths
                              }  // container maximum-prefix
    
                              leaf optimal-route-reflection {
                                type string {
                                  length "1..32";
                                }
                                description
                                  "Configure optiomal-route-reflection for this neighbor";
                              }
    
                              container next-hop-self {
                                presence
                                  "Indicates a next-hop-self node is configured.";
                                description
                                  "Disable the next hop calculation for this neighbor";
                                container inheritance-disable {
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "Prevent next-hop-self from being inherited from the parent";
                                }  // container inheritance-disable
                              }  // container next-hop-self
    
                              container next-hop-unchanged {
                                presence
                                  "Indicates a next-hop-unchanged node is configured.";
                                description
                                  "Do not overwrite next hop before advertising to eBGP peers";
                                container inheritance-disable {
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "Prevent next-hop-unchanged from being inherited from the parent";
                                }  // container inheritance-disable
                              }  // container next-hop-unchanged
    
                              container slow-peer {
                                description
                                  "configuration commands for slow-peer";
                                container detection {
                                  description
                                    "Enable or disable slow peer detection.";
                                  container enable {
                                    must
                                      "not(../disable) and
    (../split-update-group/static or
     ../split-update-group/dynamic)";
                                    presence
                                      "Indicates a enable node is configured.";
                                    description
                                      "Enable slow peer detection";
                                  }  // container enable
    
                                  container disable {
                                    must
                                      "not(../enable) and
    (../split-update-group/static or
     ../split-update-group/dynamic)";
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable slow peer detection";
                                  }  // container disable
    
                                  container split-update-group {
                                    description
                                      "Options to split update group";
                                    container static {
                                      must
                                        "not(../dynamic) and (../../enable or ../../disable)";
                                      presence
                                        "Indicates a static node is configured.";
                                      description
                                        "Manually move this peer to slow update group";
                                    }  // container static
    
                                    container dynamic {
                                      must
                                        "not(../static) and (../../enable or ../../disable)";
                                      presence
                                        "Indicates a dynamic node is configured.";
                                      description
                                        "Move peer to slow update group on detection";
                                      container permanent {
                                        must
                                          "not(../disable)";
                                        presence
                                          "Indicates a permanent node is configured.";
                                        description
                                          "Do not revert back peer on recovery";
                                      }  // container permanent
    
                                      container disable {
                                        must
                                          "not(../permanent)";
                                        presence
                                          "Indicates a disable node is configured.";
                                        description
                                          "Disable moving slow peer to updgrp";
                                      }  // container disable
                                    }  // container dynamic
                                  }  // container split-update-group
                                }  // container detection
                              }  // container slow-peer
    
                              container origin-as {
                                description
                                  "BGP origin-AS knobs";
                                container validation {
                                  description
                                    "BGP origin-AS validation knobs";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable RPKI origin-AS validation";
                                  }  // container disable
                                }  // container validation
                              }  // container origin-as
    
                              container bestpath {
                                description
                                  "Change default route selection criteria";
                                container origin-as {
                                  description
                                    "BGP origin-AS knobs";
                                  container allow {
                                    description
                                      "BGP origin-AS knobs";
                                    container invalid {
                                      presence
                                        "Indicates a invalid node is configured.";
                                      description
                                        "BGP bestpath selection will allow 'invalid' origin-AS";
                                    }  // container invalid
                                  }  // container allow
                                }  // container origin-as
                              }  // container bestpath
    
                              container route-policy {
                                description
                                  "Apply route policy to neighbor";
                                leaf in {
                                  type xr:Route-policy-name;
                                  description
                                    "Apply route policy to inbound routes";
                                }
    
                                leaf out {
                                  type xr:Route-policy-name;
                                  description
                                    "Apply route policy to outbound routes";
                                }
                              }  // container route-policy
    
                              container orf {
                                description
                                  "Specify ORF and inbound filtering criteria";
                                leaf route-policy {
                                  type xr:Route-policy-name;
                                  description
                                    "Route policy to specify ORF and inbound filter";
                                }
                              }  // container orf
    
                              container remove-private-as {
                                presence
                                  "Indicates a remove-private-as node is configured.";
                                description
                                  "Remove private AS number from outbound updates";
                                container entire-aspath {
                                  must
                                    "not(../inheritance-disable or ../internal)";
                                  presence
                                    "Indicates a entire-aspath node is configured.";
                                  description
                                    "remove only if all ASes in the path are private";
                                }  // container entire-aspath
    
                                container inheritance-disable {
                                  must
                                    "not(../entire-aspath or ../internal)";
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "Prevent remove-private-AS from being inherited from the parent";
                                }  // container inheritance-disable
    
                                container internal {
                                  must
                                    "not(../entire-aspath or ../inheritance-disable)";
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "remove only if all ASes in the path are private";
                                  container inheritance-disable {
                                    presence
                                      "Indicates a inheritance-disable node is configured.";
                                    description
                                      "Prevent remove-private-AS from being inherited from the parent";
                                  }  // container inheritance-disable
                                }  // container internal
                              }  // container remove-private-as
    
                              container remove-private-as-inbound {
                                must
                                  "not(entire-aspath and inheritance-disable)";
                                presence
                                  "Indicates a inbound node is configured.";
                                description
                                  "Remove private AS number from inbound updates";
                                container entire-aspath {
                                  presence
                                    "Indicates a entire-aspath node is configured.";
                                  description
                                    "remove only if all ASes in the path are private";
                                }  // container entire-aspath
    
                                container inheritance-disable {
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "Prevent remove-private-AS from being inherited from the parent";
                                }  // container inheritance-disable
                              }  // container remove-private-as-inbound
    
                              container enforce-multiple-labels {
                                presence
                                  "Indicates a enforce-multiple-labels node is configured.";
                                description
                                  "Enforce support for multiple labels (requires manual session flap)";
                                container inheritance-disable {
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "Prevent enforce-multiple-labels from being inherited from the parent";
                                }  // container inheritance-disable
                              }  // container enforce-multiple-labels
    
                              container route-reflector-client {
                                presence
                                  "Indicates a route-reflector-client node is configured.";
                                description
                                  "Configure a neighbor as Route Reflector client";
                                container inheritance-disable {
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "Prevent route-reflector-client from being inherited from the parent";
                                }  // container inheritance-disable
                              }  // container route-reflector-client
    
                              container accept-route-legacy-rt {
                                presence
                                  "Indicates a accept-route-legacy-rt node is configured.";
                                description
                                  "Configure a neighbor to support legacy PE for RT-Constraint AF";
                                container inheritance-disable {
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "Prevent  accept-route-legacy-RT from being inherited from the parent";
                                }  // container inheritance-disable
                              }  // container accept-route-legacy-rt
    
                              container send-community-ebgp {
                                presence
                                  "Indicates a send-community-ebgp node is configured.";
                                description
                                  "Send community attribute to this external neighbor";
                                container inheritance-disable {
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "Prevent send-community-ebgp from being inherited from the parent";
                                }  // container inheritance-disable
                              }  // container send-community-ebgp
    
                              container send-community-gshut-ebgp {
                                presence
                                  "Indicates a send-community-gshut-ebgp node is configured.";
                                description
                                  "Allow the g-shut community to be sent to this external neighbor";
                                container inheritance-disable {
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "Prevent send-community-gshut-ebgp from being inherited from the parent";
                                }  // container inheritance-disable
                              }  // container send-community-gshut-ebgp
    
                              container send-extended-community-ebgp {
                                presence
                                  "Indicates a send-extended-community-ebgp node is configured.";
                                description
                                  "Send extended community attribute to this external neighbor";
                                container inheritance-disable {
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "Prevent send-extended-community-ebgp from being inherited from parent";
                                }  // container inheritance-disable
                              }  // container send-extended-community-ebgp
    
                              container soft-reconfiguration {
                                description
                                  "Per neighbor soft reconfiguration";
                                container inbound {
                                  presence
                                    "Indicates a inbound node is configured.";
                                  description
                                    "Allow inbound soft reconfiguration for this neighbor";
                                  container rpki-dropped-only {
                                    must
                                      "not(../rpki-tested-only or ../always or ../inheritance-disable)";
                                    presence
                                      "Indicates a rpki-dropped-only node is configured.";
                                    description
                                      "Use soft-reconfig, for paths dropped by route-policy which have RPKI validity state check";
                                  }  // container rpki-dropped-only
    
                                  container rpki-tested-only {
                                    must
                                      "not(../rpki-dropped-only or ../always or ../inheritance-disable)";
                                    presence
                                      "Indicates a rpki-tested-only node is configured.";
                                    description
                                      "Use soft-reconfig for paths tested or dropped by route-policy which have RPKI validity state check";
                                  }  // container rpki-tested-only
    
                                  container always {
                                    must
                                      "not(../rpki-dropped-only or ../rpki-tested-only or ../inheritance-disable)";
                                    presence
                                      "Indicates a always node is configured.";
                                    description
                                      "Always use soft reconfig, even if route refresh is supported";
                                  }  // container always
    
                                  container inheritance-disable {
                                    must
                                      "not(../rpki-dropped-only or ../rpki-tested-only or ../always)";
                                    presence
                                      "Indicates a inheritance-disable node is configured.";
                                    description
                                      "Prevent soft-reconfiguration from being inherited from the parent";
                                  }  // container inheritance-disable
                                }  // container inbound
                              }  // container soft-reconfiguration
    
                              container update {
                                description
                                  "BGP out bound message";
                                container out {
                                  description
                                    "BGP out bound message handling";
                                  container originator-loopcheck {
                                    presence
                                      "Indicates a originator-loopcheck node is configured.";
                                    description
                                      "Loop check for same originator which sent the route";
                                    container disable {
                                      presence
                                        "Indicates a disable node is configured.";
                                      description
                                        "Disable originator loop check";
                                    }  // container disable
                                  }  // container originator-loopcheck
                                }  // container out
                              }  // container update
    
                              container advertise {
                                description
                                  "Per neighbor advertisement options";
                                container permanent-network {
                                  presence
                                    "Indicates a permanent-network node is configured.";
                                  description
                                    "Allow permanent networks for this neighbor";
                                }  // container permanent-network
    
                                container local-labeled-route {
                                  presence
                                    "Indicates a local-labeled-route node is configured.";
                                  description
                                    "Advertisement of routes with local-label";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Do not advertise routes with local-label via Unicast SAFI";
                                  }  // container disable
                                }  // container local-labeled-route
                              }  // container advertise
    
                              leaf weight {
                                type uint32 {
                                  range
                                    "0..65535";
                                }
                                description
                                  "Set default weight for routes from this neighbor";
                              }
    
                              container allowas-in {
                                presence
                                  "Indicates a allowas-in node is configured.";
                                description
                                  "Allow as-path with my AS present in it";
                                leaf number-of-occurences {
                                  type uint32 {
                                    range
                                      "1..10";
                                  }
                                  description
                                    "Number of occurences of AS number";
                                }
                              }  // container allowas-in
    
                              container long-lived-graceful-restart {
                                description
                                  "Enable long lived graceful restart support";
                                container stale-time {
                                  description
                                    "Maximum time to wait before purging long-lived stale routes";
                                  leaf send {
                                    type uint32 {
                                      range
                                        "0..16777215";
                                    }
                                    description
                                      "Stale-time sent in LLGR Capability";
                                  }
    
                                  leaf accept {
                                    type uint32 {
                                      range
                                        "0..16777215";
                                    }
                                    description
                                      "Maximum stale-time acceptable from neighbor";
                                  }
                                }  // container stale-time
    
                                container capable {
                                  presence
                                    "Indicates a capable node is configured.";
                                  description
                                    "Treat neighbor as LLGR capable";
                                }  // container capable
                              }  // container long-lived-graceful-restart
    
                              container as-override {
                                presence
                                  "Indicates a as-override node is configured.";
                                description
                                  "Override matching AS-number while sending update";
                                container inheritance-disable {
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "Prevent as-override from being inherited from the parent";
                                }  // container inheritance-disable
                              }  // container as-override
    
                              container aigp {
                                presence
                                  "Indicates a aigp node is configured.";
                                description
                                  "Enable AIGP for this neighbor ";
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable AIGP";
                                }  // container disable
                              }  // container aigp
    
                              container aigp-send {
                                description
                                  "Copy AIGP";
                                container cost-community {
                                  description
                                    "Send AIGP value in Cost Community";
                                  leaf cost-community-id {
                                    type uint32 {
                                      range
                                        "0..255";
                                    }
                                    must
                                      "not(../disable)";
                                    description
                                      "Cost community ID";
                                  }
    
                                  container poi {
                                    must
                                      "(igp-cost or pre-bestpath) and not(igp-cost and pre-bestpath)";
                                    presence
                                      "Indicates a poi node is configured.";
                                    description
                                      "Point of insertion for bestpath calculation";
                                    container igp-cost {
                                      presence
                                        "Indicates a igp-cost node is configured.";
                                      description
                                        "Cost community is used after IGP distance to next hop";
                                      container transitive {
                                        presence
                                          "Indicates a transitive node is configured.";
                                        description
                                          "Enable transitive cost community";
                                      }  // container transitive
                                    }  // container igp-cost
    
                                    container pre-bestpath {
                                      presence
                                        "Indicates a pre-bestpath node is configured.";
                                      description
                                        "Cost community is first step in best path calculation";
                                      container transitive {
                                        presence
                                          "Indicates a transitive node is configured.";
                                        description
                                          "Enable transitive cost community";
                                      }  // container transitive
                                    }  // container pre-bestpath
                                  }  // container poi
    
                                  container disable {
                                    must
                                      "not(../cost-community-id)";
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable aigp send cost-community";
                                  }  // container disable
                                }  // container cost-community
    
                                container med {
                                  presence
                                    "Indicates a med node is configured.";
                                  description
                                    "Send AIGP value in MED";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable aigp send med";
                                  }  // container disable
                                }  // container med
                              }  // container aigp-send
    
                              container validation {
                                when
                                  "../af-name = 'ipv4-flowspec' or ../af-name = 'ipv6-flowspec'";
                                presence
                                  "Indicates a validation node is configured.";
                                description
                                  "Flowspec Validation for this neighbor ";
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable Flowspec Validation";
                                }  // container disable
    
                                container redirect {
                                  description
                                    "Flowspec Redirect nexthop Validation";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable Flowspec Redirect nexthop Validation";
                                  }  // container disable
                                }  // container redirect
                              }  // container validation
    
                              container send-multicast-attributes {
                                when
                                  "../af-name = 'ipv4-unicast' or ../af-name = 'ipv6-unicast' or ../af-name = 'ipv4-labeled-unicast' or ../af-name = 'ipv6-labeled-unicast' or ../af-name = 'ipv4-multicast' or ../af-name = 'ipv6-multicast' or ../af-name = 'ipv4-mvpn' or ../af-name = 'ipv6-mvpn'";
                                presence
                                  "Indicates a send-multicast-attributes node is configured.";
                                description
                                  "Send multicast attributes to this neighbor ";
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable send multicast attribute";
                                }  // container disable
                              }  // container send-multicast-attributes
    
                              container signalling {
                                description
                                  "Signalling protocols to disable, BGP or LDP";
                                container bgp {
                                  description
                                    "Select BGP to disable";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable Signalling type";
                                  }  // container disable
                                }  // container bgp
    
                                container ldp {
                                  description
                                    "Select LDP to disable";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable Signalling type";
                                  }  // container disable
                                }  // container ldp
                              }  // container signalling
    
                              container accept-own {
                                presence
                                  "Indicates a accept-own node is configured.";
                                description
                                  "Handle self-originated routes with Accept-Own community";
                                container inheritance-disable {
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "Prevent item being inherited from a parent group";
                                }  // container inheritance-disable
                              }  // container accept-own
                            }  // list address-family
                          }  // container address-families
    
                          container update {
                            description
                              "BGP Update configuration";
                            container in {
                              description
                                "Inbound update message handling";
                              container filtering {
                                presence
                                  "Indicates a filtering node is configured.";
                                description
                                  "Inbound update message filtering";
                                container message {
                                  description
                                    "Filtered update messages";
                                  container buffers {
                                    presence
                                      "Indicates a buffers node is configured.";
                                    description
                                      "Filtered update message buffers";
                                    leaf number-of-buffers {
                                      type uint32 {
                                        range
                                          "0..25";
                                      }
                                      mandatory
                                        true;
                                      description
                                        "Filtered update message buffers";
                                    }
    
                                    container non-circular {
                                      presence
                                        "Indicates a non-circular node is configured.";
                                      description
                                        "Message buffer list is not circular";
                                    }  // container non-circular
                                  }  // container buffers
                                }  // container message
    
                                container logging {
                                  description
                                    "Update filtering syslog message";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable update filtering syslog message";
                                  }  // container disable
                                }  // container logging
    
                                container attribute-filter {
                                  description
                                    "Attribute-filter configuration";
                                  leaf group {
                                    type string {
                                      length
                                        "1..1024";
                                    }
                                    description
                                      "Attribute-filter group configuration";
                                  }
                                }  // container attribute-filter
                              }  // container filtering
    
                              container merge {
                                description
                                  "Merge incoming updates";
                                container safi {
                                  description
                                    "SAFI of the NLRIs to merge";
                                  container unicast {
                                    description
                                      "IPv4/IPv6 unicast paths";
                                    container labeled-unicast {
                                      presence
                                        "Indicates a labeled-unicast node is configured.";
                                      description
                                        "IPv4/IPv6 labeled-unicast paths";
                                      container inheritance-disable {
                                        presence
                                          "Indicates a inheritance-disable node is configured.";
                                        description
                                          "Do not inherit this configuration from parent group";
                                      }  // container inheritance-disable
                                    }  // container labeled-unicast
                                  }  // container unicast
                                }  // container safi
                              }  // container merge
                            }  // container in
                          }  // container update
    
                          container graceful-maintenance {
                            presence
                              "Indicates a graceful-maintenance node is configured.";
                            description
                              "Attributes for Graceful Maintenance. This will cause
    neig de-prer routes from this router and
    choonates.his allows the router to be
    brour out  service gracefully.";
                            container local-preference {
                              must
                                "local-preference-value or inheritance-disable";
                              presence
                                "Indicates a local-preference node is configured.";
                              description
                                "local preference with which to advertise routes to ibgps. Deflt=No Touch";
                              leaf local-preference-value {
                                type uint32 {
                                  range
                                    "0..4294967295";
                                }
                                description
                                  "Range of values for Local Preference";
                              }
    
                              container inheritance-disable {
                                presence
                                  "Indicates a inheritance-disable node is configured.";
                                description
                                  "Prevent local preference from being inherited from the parent";
                              }  // container inheritance-disable
                            }  // container local-preference
    
                            container as-prepends {
                              must
                                "number-of-as-prepends or inheritance-disable";
                              presence
                                "Indicates a as-prepends node is configured.";
                              description
                                "Number of times to prepend the local AS number to the
    AS poutes.efault=0";
                              leaf number-of-as-prepends {
                                type uint32 {
                                  range "0..6";
                                }
                                description
                                  "Range of number of AS prepends";
                              }
    
                              container inheritance-disable {
                                presence
                                  "Indicates a inheritance-disable node is configured.";
                                description
                                  "Prevent AS prepends from being inherited from the parent";
                              }  // container inheritance-disable
                            }  // container as-prepends
    
                            container activate {
                              presence
                                "Indicates a activate node is configured.";
                              description
                                "Routes will be announced with the graceful maintenance
    attrhile aivated either here or under router
    bgp ation.hile activated, all routes to this
    neigl be aounced with the attributes
    confere anall routes from this neighbor will
    be a to otr neighbors with the graceful
    mainattribes configured under those
    neighe g-st community will be announced
    regaf the her attributes configured here. To
    alloshut cmunity to be announced to ebgp
    neighe sencommunity-gshut-ebgp configuration
    is aired. te: changes to the attributes will
    not ect whe activated.";
                              container inheritance-disable {
                                presence
                                  "Indicates a inheritance-disable node is configured.";
                                description
                                  "Prevent activate from being inherited from the parent";
                              }  // container inheritance-disable
                            }  // container activate
                          }  // container graceful-maintenance
    
                          leaf remote-as {
                            type xr:Bgp-as-number;
                            description
                              "bgp as-number";
                          }
    
                          leaf remote-as-list {
                            type string {
                              length "1..1024";
                            }
                            description
                              "Remote as-list configuration";
                          }
    
                          container use {
                            description
                              "Inherit configuration from a group";
                            leaf session-group {
                              type string {
                                length "1..1024";
                              }
                              description
                                "Inherit address-family independent config from a session-group";
                            }
    
                            leaf neighbor-group {
                              type string {
                                length "1..1024";
                              }
                              description
                                "Inherit configuration from a neighbor-group";
                            }
                          }  // container use
    
                          container advertisement-interval {
                            presence
                              "Indicates a advertisement-interval node is configured.";
                            description
                              "Minimum interval between sending BGP routing updates";
                            leaf time-in-seconds {
                              type uint32 {
                                range "0..600";
                              }
                              mandatory true;
                              description
                                "Minimum interval between sending BGP routing updates";
                            }
    
                            leaf time-in-milliseconds {
                              type uint32 {
                                range "0..999";
                              }
                              description
                                "time in milliseconds";
                            }
                          }  // container advertisement-interval
    
                          leaf description {
                            type string {
                              length "1..1024";
                            }
                            description
                              "Neighbor specific description";
                          }
    
                          container ignore-connected-check {
                            presence
                              "Indicates a ignore-connected-check node is configured.";
                            description
                              "Bypass the directly connected nexthop check for single-hop eBGP peering";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent ignore-connected-check from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container ignore-connected-check
    
                          container internal-vpn-client {
                            presence
                              "Indicates a internal-vpn-client node is configured.";
                            description
                              "Preserve iBGP CE neighbor path in ATTR_SET across VPN core";
                          }  // container internal-vpn-client
    
                          container ebgp-multihop {
                            presence
                              "Indicates a ebgp-multihop node is configured.";
                            description
                              "Allow EBGP neighbors not on directly connected networks";
                            leaf maximum-hop-count {
                              type uint32 {
                                range "1..255";
                              }
                              mandatory true;
                              description
                                "maximum hop count";
                            }
    
                            container mpls {
                              presence
                                "Indicates a mpls node is configured.";
                              description
                                "Disable BGP MPLS forwarding";
                            }  // container mpls
                          }  // container ebgp-multihop
    
                          container tcp {
                            description
                              "TCP session configuration commands";
                            container mss {
                              must
                                "initial-mss or inheritance-disable";
                              presence
                                "Indicates a mss node is configured.";
                              description
                                "Maximum Segment Size";
                              leaf initial-mss {
                                type uint32 {
                                  range
                                    "68..10000";
                                }
                                description
                                  "TCP initial maximum segment size";
                              }
    
                              container inheritance-disable {
                                presence
                                  "Indicates a inheritance-disable node is configured.";
                                description
                                  "Prevent tcp mss from being inherited from the parent";
                              }  // container inheritance-disable
                            }  // container mss
                          }  // container tcp
    
                          container bmp-activate {
                            description
                              "Enable BMP logging for this neighbor";
                            container servers {
                              description
                                "Enable BMP connection to particular server";
                              list server {
                                key "server-id";
                                description
                                  "Enable BMP connection to particular server";
                                leaf server-id {
                                  type uint32 {
                                    range "1..8";
                                  }
                                  description
                                    "Enable BMP connection to particular server";
                                }
                              }  // list server
                            }  // container servers
                          }  // container bmp-activate
    
                          container bfd {
                            description
                              "Configure BFD parameters";
                            container fast-detect {
                              must
                                "not(strict-mode and disable)";
                              presence
                                "Indicates a fast-detect node is configured.";
                              description
                                "Enable Fast detection";
                              container strict-mode {
                                presence
                                  "Indicates a strict-mode node is configured.";
                                description
                                  "Hold down neighbor session until BFD session is up";
                              }  // container strict-mode
    
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Prevent bfd settings from being inherited from the parent";
                              }  // container disable
                            }  // container fast-detect
    
                            leaf minimum-interval {
                              type uint32 {
                                range "3..30000";
                              }
                              description
                                "Hello interval";
                            }
    
                            leaf multiplier {
                              type uint32 {
                                range "2..16";
                              }
                              description
                                "Detect multiplier";
                            }
                          }  // container bfd
    
                          container keychain {
                            must
                              "name or inheritance-disable";
                            presence
                              "Indicates a keychain node is configured.";
                            description
                              "Set keychain based authentication";
                            leaf name {
                              type string {
                                length "1..32";
                              }
                              description
                                "Name of the key chain - maximum 32 characters";
                            }
    
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent keychain from being inherited from parent";
                            }  // container inheritance-disable
                          }  // container keychain
    
                          container local-as {
                            must
                              "as-number or inheritance-disable";
                            presence
                              "Indicates a local-as node is configured.";
                            description
                              "Specify local AS number";
                            leaf as-number {
                              type xr:Bgp-as-number;
                              description
                                "bgp as-number";
                            }
    
                            container no-prepend {
                              presence
                                "Indicates a no-prepend node is configured.";
                              description
                                "Do not prepend local AS to announcements from this neighbor";
                              container replace-as {
                                presence
                                  "Indicates a replace-as node is configured.";
                                description
                                  "Prepend only local AS to announcements to this neighbor";
                                container dual-as {
                                  presence
                                    "Indicates a dual-as node is configured.";
                                  description
                                    "Dual-AS mode";
                                }  // container dual-as
                              }  // container replace-as
                            }  // container no-prepend
    
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent local AS from being inherited from parent";
                            }  // container inheritance-disable
                          }  // container local-as
    
                          container password {
                            must
                              "encrypted or inheritance-disable";
                            presence
                              "Indicates a password node is configured.";
                            description
                              "Set a password";
                            leaf encrypted {
                              type xr:Proprietary-password;
                              description
                                "Specifies an ENCRYPTED password will follow";
                            }
    
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent password from being inherited from parent";
                            }  // container inheritance-disable
                          }  // container password
    
                          container receive-buffer-size {
                            presence
                              "Indicates a receive-buffer-size node is configured.";
                            description
                              "Set socket and BGP receive buffer size";
                            leaf receive-socket-buffer-size {
                              type uint32 {
                                range
                                  "512..131072";
                              }
                              mandatory true;
                              description
                                "Set socket and BGP receive buffer size";
                            }
    
                            leaf bgp-read-buffer-size {
                              type uint32 {
                                range
                                  "512..131072";
                              }
                              description
                                "BGP Read buffer size in bytes";
                            }
                          }  // container receive-buffer-size
    
                          container send-buffer-size {
                            presence
                              "Indicates a send-buffer-size node is configured.";
                            description
                              "Set socket and BGP send buffer size";
                            leaf send-socket-buffer-size {
                              type uint32 {
                                range
                                  "4096..131072";
                              }
                              mandatory true;
                              description
                                "Set socket and BGP send buffer size";
                            }
    
                            leaf bgp-write-buffer-size {
                              type uint32 {
                                range
                                  "4096..131072";
                              }
                              description
                                "BGP Write buffer size in bytes";
                            }
                          }  // container send-buffer-size
    
                          container shutdown {
                            presence
                              "Indicates a shutdown node is configured.";
                            description
                              "Administratively shut down this neighbor";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent this neighbor being shutdown, even if its parent is";
                            }  // container inheritance-disable
                          }  // container shutdown
    
                          container timers {
                            presence
                              "Indicates a timers node is configured.";
                            description
                              "BGP per neighbor timers";
                            leaf keepalive-interval {
                              type uint32 {
                                range "0..65535";
                              }
                              mandatory true;
                              description
                                "BGP timers";
                            }
    
                            leaf holdtime {
                              type union {
                                type uint32 {
                                  range "0";
                                }
                                type uint32 {
                                  range
                                    "3..65535";
                                }
                              }
                              mandatory true;
                              description
                                "Holdtime. Set 0 to disable keepalives/hold time.";
                            }
    
                            leaf minimum-acceptable-holdtime {
                              type union {
                                type uint32 {
                                  range "0";
                                }
                                type uint32 {
                                  range
                                    "3..65535";
                                }
                              }
                              description
                                "Minimum acceptable holdtime from neighbor. Set 0 to disable keepalives/hold time.";
                            }
                          }  // container timers
    
                          container local {
                            description
                              "Configure local parameter";
                            container address {
                              must
                                "ip-address or inheritance-disable";
                              presence
                                "Indicates a address node is configured.";
                              description
                                "use configured local address for bgp peering";
                              leaf ip-address {
                                type inet:ip-address-no-zone;
                                description
                                  "IPv4 address";
                              }
    
                              container inheritance-disable {
                                presence
                                  "Indicates a inheritance-disable node is configured.";
                                description
                                  "Prevent local address from being inherited from parent";
                              }  // container inheritance-disable
                            }  // container address
                          }  // container local
    
                          container log {
                            description
                              "Logging update messages per neighbor";
                            container message {
                              description
                                "Logging update/notification messages per neighbor";
                              container in {
                                description
                                  "Inbound log messages";
                                leaf message-log-buffer-size {
                                  type uint32 {
                                    range
                                      "1..500";
                                  }
                                  description
                                    "Range for message log buffer size";
                                }
    
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable inbound message logging";
                                }  // container disable
    
                                container inheritance-diable {
                                  presence
                                    "Indicates a inheritance-diable node is configured.";
                                  description
                                    "Prevents the msg log from being inherited from the parent";
                                }  // container inheritance-diable
                              }  // container in
    
                              container out {
                                description
                                  "Outbound log messages";
                                leaf range-for-message-log-buffer {
                                  type uint32 {
                                    range
                                      "1..500";
                                  }
                                  description
                                    "Range for message log buffer size";
                                }
    
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable outbound message logging";
                                }  // container disable
    
                                container inheritance-diable {
                                  presence
                                    "Indicates a inheritance-diable node is configured.";
                                  description
                                    "Prevents the msg log from being inherited from the parent";
                                }  // container inheritance-diable
                              }  // container out
                            }  // container message
                          }  // container log
    
                          leaf update-source {
                            type xr:Interface-name;
                            description
                              "Source of routing updates";
                          }
    
                          container local-address-subnet {
                            description
                              "Local address subnet of routing updates";
                            leaf ip-address {
                              type inet:ip-address-no-zone;
                              description
                                "IP address and mask or masklength";
                            }
    
                            leaf mask-length {
                              type uint32 {
                                range "0..128";
                              }
                              description
                                "IP address and mask length";
                            }
                          }  // container local-address-subnet
    
                          container dmz-link-bandwidth {
                            presence
                              "Indicates a dmz-link-bandwidth node is configured.";
                            description
                              "Propagate the DMZ link bandwidth";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent dmz-link-bandwidth from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container dmz-link-bandwidth
    
                          container ebgp-recv-extcommunity-dmz {
                            presence
                              "Indicates a ebgp-recv-extcommunity-dmz node is configured.";
                            description
                              "Receive extcommunity dmz link bandwidth from ebgp neighbor";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent ebgp-send-community-dmz from being inherited from parent";
                            }  // container inheritance-disable
                          }  // container ebgp-recv-extcommunity-dmz
    
                          container ebgp-send-extcommunity-dmz {
                            must
                              "not(cumulative and inheritance-disable)";
                            presence
                              "Indicates a ebgp-send-extcommunity-dmz node is configured.";
                            description
                              "Send extended community dmz link bandwidth to ebgp neighbor";
                            container cumulative {
                              presence
                                "Indicates a cumulative node is configured.";
                              description
                                "Send cumulative community dmz link bandwidth of all multipaths to ebgp neighbor";
                            }  // container cumulative
    
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent ebgp-send-extcommunity-dmz from being inherited from parent";
                            }  // container inheritance-disable
                          }  // container ebgp-send-extcommunity-dmz
    
                          container ttl-security {
                            presence
                              "Indicates a ttl-security node is configured.";
                            description
                              "Enable EBGP TTL security";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent ttl-security from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container ttl-security
    
                          container session-open-mode {
                            description
                              "Establish BGP session using this TCP open mode";
                            container active-only {
                              must
                                "not(../passive-only or ../both)";
                              presence
                                "Indicates a active-only node is configured.";
                              description
                                "Active only";
                            }  // container active-only
    
                            container passive-only {
                              must
                                "not(../active-only or ../both)";
                              presence
                                "Indicates a passive-only node is configured.";
                              description
                                "Passive only";
                            }  // container passive-only
    
                            container both {
                              must
                                "not(../active-only or ../passive-only)";
                              presence
                                "Indicates a both node is configured.";
                              description
                                "Prevent session-open-mode being inherited from the parent";
                            }  // container both
                          }  // container session-open-mode
    
                          leaf dscp {
                            type enumeration {
                              enum "default" {
                                value 0;
                                description
                                  "Set packets with default dscp (000000)";
                              }
                              enum "cs1" {
                                value 8;
                                description
                                  "Set packets with CS1(precedence 1) dscp (001000)";
                              }
                              enum "af11" {
                                value 10;
                                description
                                  "Set packets with AF11 dscp (001010)";
                              }
                              enum "af12" {
                                value 12;
                                description
                                  "Set packets with AF12 dscp (001100)";
                              }
                              enum "af13" {
                                value 14;
                                description
                                  "Set packets with AF13 dscp (001110)";
                              }
                              enum "cs2" {
                                value 16;
                                description
                                  "Set packets with CS2(precedence 2) dscp (010000)";
                              }
                              enum "af21" {
                                value 18;
                                description
                                  "Set packets with AF21 dscp (010010)";
                              }
                              enum "af22" {
                                value 20;
                                description
                                  "Set packets with AF22 dscp (010100)";
                              }
                              enum "af23" {
                                value 22;
                                description
                                  "Set packets with AF23 dscp (010110)";
                              }
                              enum "cs3" {
                                value 24;
                                description
                                  "Set packets with CS3(precedence 3) dscp (011000)";
                              }
                              enum "af31" {
                                value 26;
                                description
                                  "Set packets with AF31 dscp (011010)";
                              }
                              enum "af32" {
                                value 28;
                                description
                                  "Set packets with AF32 dscp (011100)";
                              }
                              enum "af33" {
                                value 30;
                                description
                                  "Set packets with AF33 dscp (011110)";
                              }
                              enum "cs4" {
                                value 32;
                                description
                                  "Set packets with CS4(precedence 4) dscp (100000)";
                              }
                              enum "af41" {
                                value 34;
                                description
                                  "Set packets with AF41 dscp (100010)";
                              }
                              enum "af42" {
                                value 36;
                                description
                                  "Set packets with AF42 dscp (100100)";
                              }
                              enum "af43" {
                                value 38;
                                description
                                  "Set packets with AF43 dscp (100110)";
                              }
                              enum "cs5" {
                                value 40;
                                description
                                  "Set packets with CS5(precedence 5) dscp (101000)";
                              }
                              enum "ef" {
                                value 46;
                                description
                                  "Set packets with EF dscp (101110)";
                              }
                              enum "cs6" {
                                value 48;
                                description
                                  "Set packets with CS6(precedence 6) dscp (110000)";
                              }
                              enum "cs7" {
                                value 56;
                                description
                                  "Set packets with CS7(precedence 7) dscp (111000)";
                              }
                            }
                            description
                              "Set IP DSCP (DiffServ CodePoint)";
                          }
    
                          leaf precedence {
                            type enumeration {
                              enum "routine" {
                                value 0;
                                description
                                  "Set packets with routine precedence (0)";
                              }
                              enum "priority" {
                                value 1;
                                description
                                  "Set packets with priority precedence (1)";
                              }
                              enum "immediate" {
                                value 2;
                                description
                                  "Set packets with immediate precedence (2)";
                              }
                              enum "flash" {
                                value 3;
                                description
                                  "Set packets with flash precedence (3)";
                              }
                              enum
                                "flash-override" {
                                value 4;
                                description
                                  "Set packets with flash override precedence (4)";
                              }
                              enum "critical" {
                                value 5;
                                description
                                  "Set packets with critical precedence (5)";
                              }
                              enum "internet" {
                                value 6;
                                description
                                  "Set packets with internetwork control precedence (6)";
                              }
                              enum "network" {
                                value 7;
                                description
                                  "Set packets with network control precedence (7)";
                              }
                            }
                            description
                              "Set precedence";
                          }
    
                          container capability {
                            description
                              "Advertise capability to the peer";
                            container suppress {
                              description
                                "Suppress advertising capability to the peer ";
                              container four-byte-as {
                                presence
                                  "Indicates a four-byte-as node is configured.";
                                description
                                  "4-byte-as capability";
                                container inheritance-disable {
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "Prevent capability suppress 4-type-as being inherited from the parent";
                                }  // container inheritance-disable
                              }  // container four-byte-as
    
                              container all {
                                presence
                                  "Indicates a all node is configured.";
                                description
                                  "All capabilities";
                                container inheritance-disable {
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "Do not inherit this configuration from parent group";
                                }  // container inheritance-disable
                              }  // container all
    
                              container extended-nexthop-encoding {
                                presence
                                  "Indicates a extended-nexthop-encoding node is configured.";
                                description
                                  "Extended-nexthop-encoding capabilities (IETF RFC 5549)";
                                container inheritance-disable {
                                  presence
                                    "Indicates a inheritance-disable node is configured.";
                                  description
                                    "Do not inherit this configuration from parent group";
                                }  // container inheritance-disable
                              }  // container extended-nexthop-encoding
                            }  // container suppress
    
                            container additional-paths {
                              description
                                "Additional paths capability";
                              container send {
                                presence
                                  "Indicates a send node is configured.";
                                description
                                  "Additional paths Send capability";
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Do not advertise additional paths Send capability";
                                }  // container disable
                              }  // container send
    
                              container receive {
                                presence
                                  "Indicates a receive node is configured.";
                                description
                                  "Additional paths Receive capability";
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Do not advertise additional paths Receive capability";
                                }  // container disable
                              }  // container receive
                            }  // container additional-paths
                          }  // container capability
    
                          container graceful-restart {
                            presence
                              "Indicates a graceful-restart node is configured.";
                            description
                              "Enable graceful restart support for this neighbor";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable graceful restart support for this neighbor";
                            }  // container disable
    
                            leaf restart-time {
                              type uint32 {
                                range "1..4095";
                              }
                              description
                                "Restart time advertised to the neighbor";
                            }
    
                            leaf stalepath-time {
                              type uint32 {
                                range "1..4095";
                              }
                              description
                                "Maximum time to wait for restart of GR capable peer";
                            }
                          }  // container graceful-restart
    
                          container enforce-first-as {
                            presence
                              "Indicates a enforce-first-as node is configured.";
                            description
                              "Enforce the first AS for EBGP routes";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Do not enforce the first AS for EBGP routes";
                            }  // container disable
                          }  // container enforce-first-as
    
                          container enforce-first-as-disable {
                            presence
                              "Indicates a enforce-first-as-disable node is configured.";
                            description
                              "Do not enforce the first AS for EBGP routes";
                          }  // container enforce-first-as-disable
    
                          leaf maximum-peers {
                            type uint32 {
                              range "1..4095";
                            }
                            description
                              "Maximum dynamic neighbors";
                          }
    
                          leaf idle-watch-time {
                            type uint32 {
                              range "30..1800";
                            }
                            description
                              "Maximum time to wait for deletion of IDLE state dynamic peer";
                          }
    
                          container egress-engineering {
                            presence
                              "Indicates a egress-engineering node is configured.";
                            description
                              "Enable egress peer engineering for this neighbor";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Do not inherit egress-engineering from the parent";
                            }  // container inheritance-disable
                          }  // container egress-engineering
    
                          container peer-sets {
                            description
                              "Assign this neighbor to a peer-set used for egress peer engineering";
                            list peer-set {
                              key "peer-set-id";
                              description
                                "Assign this neighbor to a peer-set used for egress peer engineering";
                              leaf peer-set-id {
                                type uint32 {
                                  range "1..255";
                                }
                                description
                                  "Assign this neighbor to a peer-set used for egress peer engineering";
                              }
                            }  // list peer-set
                          }  // container peer-sets
    
                          container peer-node-sid {
                            description
                              "Assign this neighbor a manual SID for egress peer engineering";
                            leaf index {
                              type uint32 {
                                range
                                  "0..1033575";
                              }
                              description
                                "Segment Index value which is offset of SRLB";
                            }
                          }  // container peer-node-sid
    
                          container ao {
                            description
                              "Enable Authentiation Option";
                            leaf key-chain-name {
                              type string {
                                length "1..32";
                              }
                              must
                                "not(../inheritance-disable) and (../include-tcp-options/enable or ../include-tcp-options/disable)";
                              description
                                "Name of the key chain - maximum 32 characters";
                            }
    
                            container include-tcp-options {
                              description
                                "Include/Exclude other TCP options in the header";
                              container enable {
                                must
                                  "not(../disable or ../../inheritance-disable)";
                                presence
                                  "Indicates a enable node is configured.";
                                description
                                  "Include other TCP options in the header";
                              }  // container enable
    
                              container disable {
                                must
                                  "not(../enable or ../../inheritance-disable)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Exclude other TCP options in the header";
                              }  // container disable
    
                              container accept-ao-mismatch-connection {
                                must
                                  "../enable or ../disable";
                                presence
                                  "Indicates a accept-ao-mismatch-connection node is configured.";
                                description
                                  "Accept new connection even if AO mismatched";
                              }  // container accept-ao-mismatch-connection
                            }  // container include-tcp-options
    
                            container inheritance-disable {
                              must
                                "not(../key-chain-name)";
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent keychain from being inherited from parent";
                            }  // container inheritance-disable
                          }  // container ao
    
                          container origin-as {
                            description
                              "BGP origin-AS knobs";
                            container validation {
                              description
                                "BGP origin-AS validation knobs";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable RPKI origin-AS validation";
                              }  // container disable
                            }  // container validation
                          }  // container origin-as
    
                          container bestpath {
                            description
                              "Change default route selection criteria";
                            container origin-as {
                              description
                                "BGP origin-AS knobs";
                              container allow {
                                description
                                  "BGP origin-AS knobs";
                                container invalid {
                                  presence
                                    "Indicates a invalid node is configured.";
                                  description
                                    "BGP bestpath selection will allow 'invalid' origin-AS";
                                }  // container invalid
                              }  // container allow
                            }  // container origin-as
                          }  // container bestpath
                        }  // list neighbor-range
                      }  // container neighbors
    
                      container mpls {
                        description
                          "Enable mpls parameters";
                        container activate {
                          description
                            "Enter mpls interfaces in BGP vrf mpls activation mode";
                          container interfaces {
                            description
                              "Interface to enable mpls";
                            list interface {
                              key "interface-name";
                              description
                                "Interface to enable mpls";
                              leaf interface-name {
                                type xr:Interface-name;
                                description
                                  "Interface to enable mpls";
                              }
                            }  // list interface
                          }  // container interfaces
                        }  // container activate
                      }  // container mpls
    
                      container default-information {
                        description
                          "Control distribution of default information";
                        container originate {
                          presence
                            "Indicates a originate node is configured.";
                          description
                            "Distribute a default route";
                        }  // container originate
                      }  // container default-information
    
                      leaf default-metric {
                        type uint32 {
                          range "1..4294967295";
                        }
                        description
                          "default redistributed metric";
                      }
    
                      container socket {
                        description
                          "set socket parameters";
                        leaf send-buffer-size {
                          type uint32 {
                            range "4096..131072";
                          }
                          description
                            "socket send buffer size";
                        }
    
                        leaf bgp-write-buffer-size {
                          type uint32 {
                            range "4096..131072";
                          }
                          must
                            "../send-buffer-size";
                          description
                            "BGP Write buffer size in bytes";
                        }
    
                        leaf receive-buffer-size {
                          type uint32 {
                            range "512..131072";
                          }
                          description
                            "socket receive buffer size";
                        }
    
                        leaf bgp-read-buffer-size {
                          type uint32 {
                            range "512..131072";
                          }
                          must
                            "../receive-buffer-size";
                          description
                            "BGP Read buffer size in bytes";
                        }
                      }  // container socket
    
                      container nexthop {
                        description
                          "Configure next-hop related items";
                        container mpls {
                          description
                            "Configure next-hop related items for mpls";
                          container forwarding {
                            description
                              "Enable next hop mpls forwarding path";
                            container ibgp {
                              presence
                                "Indicates a ibgp node is configured.";
                              description
                                "Enable mpls forwarding path for ibgp learnt nexthops";
                            }  // container ibgp
                          }  // container forwarding
                        }  // container mpls
    
                        container resolution {
                          description
                            "Configure next-hop related items for resolution";
                          container allow-default {
                            presence
                              "Indicates a allow-default node is configured.";
                            description
                              "Enable nexthops resolution using default route";
                          }  // container allow-default
                        }  // container resolution
                      }  // container nexthop
    
                      container slow-peer {
                        description
                          "Disable slow peer detection";
                        container detection {
                          description
                            "Disable slow peer detection";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable slow peer detection";
                          }  // container disable
                        }  // container detection
                      }  // container slow-peer
    
                      container timers {
                        description
                          "Adjust routing timers";
                        container bgp {
                          presence
                            "Indicates a bgp node is configured.";
                          description
                            "BGP timers";
                          leaf keepalive-interval {
                            type uint32 {
                              range "0..65535";
                            }
                            mandatory true;
                            description
                              "BGP timers";
                          }
    
                          leaf holdtime {
                            type union {
                              type uint32 {
                                range "0";
                              }
                              type uint32 {
                                range "3..65535";
                              }
                            }
                            mandatory true;
                            description
                              "Holdtime. Set 0 to disable keepalives/hold time.";
                          }
    
                          leaf minimum-acceptable-holdtime {
                            type union {
                              type uint32 {
                                range "0";
                              }
                              type uint32 {
                                range "3..65535";
                              }
                            }
                            description
                              "Minimum acceptable holdtime from neighbor. Set 0 to disable keepalives/hold time.";
                          }
                        }  // container bgp
                      }  // container timers
    
                      container optimal-route-reflection {
                        description
                          "Configure optimal-route-reflection group";
                        container ipv4 {
                          description
                            "IPv4 ORR group";
                          list orr-group {
                            key "orr-group-name";
                            description
                              "ORR group name - maximum 32 characters";
                            leaf orr-group-name {
                              type string {
                                length "1..32";
                              }
                              description
                                "ORR group name - maximum 32 characters";
                            }
    
                            leaf primary-address {
                              type inet:ipv4-address-no-zone;
                              mandatory true;
                              description
                                "IPv4 primary address";
                            }
    
                            leaf secondary-address {
                              type inet:ipv4-address-no-zone;
                              description
                                "IPv4 secondary address";
                            }
    
                            leaf tertiary-address {
                              type inet:ipv4-address-no-zone;
                              must
                                "../secondary-address";
                              description
                                "IPv4 tertiary address";
                            }
                          }  // list orr-group
                        }  // container ipv4
    
                        container ipv6 {
                          description
                            "IPv6 ORR group";
                          list orr-group {
                            key "orr-group-name";
                            description
                              "ORR group name - maximum 32 characters";
                            leaf orr-group-name {
                              type string {
                                length "1..32";
                              }
                              description
                                "ORR group name - maximum 32 characters";
                            }
    
                            leaf primary-address {
                              type inet:ipv6-address-no-zone;
                              mandatory true;
                              description
                                "IPv6 primary address";
                            }
    
                            leaf secondary-address {
                              type inet:ipv6-address-no-zone;
                              description
                                "IPv6 secondary address";
                            }
    
                            leaf tertiary-address {
                              type inet:ipv6-address-no-zone;
                              must
                                "../secondary-address";
                              description
                                "IPv6 tertiary address";
                            }
                          }  // list orr-group
                        }  // container ipv6
                      }  // container optimal-route-reflection
    
                      container bgp {
                        description
                          "BGP commands";
                        container auto-policy-soft-reset {
                          description
                            "Enable automatic soft peer reset on policy reconfiguration";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable automatic soft peer reset on policy reconfiguration";
                          }  // container disable
                        }  // container auto-policy-soft-reset
    
                        container bestpath {
                          description
                            "Change default route selection criteria";
                          container as-path {
                            description
                              "AS path length";
                            container ignore {
                              presence
                                "Indicates a ignore node is configured.";
                              description
                                "Ignore as-path length";
                            }  // container ignore
    
                            container multipath-relax {
                              presence
                                "Indicates a multipath-relax node is configured.";
                              description
                                "Relax as-path check for multipath selection";
                            }  // container multipath-relax
                          }  // container as-path
    
                          container cost-community {
                            description
                              "Cost community";
                            container ignore {
                              presence
                                "Indicates a ignore node is configured.";
                              description
                                "Ignore cost-community comparison";
                            }  // container ignore
                          }  // container cost-community
    
                          container compare-routerid {
                            presence
                              "Indicates a compare-routerid node is configured.";
                            description
                              "Compare router-id for identical EBGP paths";
                          }  // container compare-routerid
    
                          container aigp {
                            description
                              "AIGP attribute";
                            container ignore {
                              presence
                                "Indicates a ignore node is configured.";
                              description
                                "Ignore AIGP attribute";
                            }  // container ignore
                          }  // container aigp
    
                          container igp-metric {
                            description
                              "IGP metric values";
                            container ignore {
                              presence
                                "Indicates a ignore node is configured.";
                              description
                                "Ignore IGP metric during path comparison";
                            }  // container ignore
                          }  // container igp-metric
    
                          container med {
                            description
                              "MED related";
                            container always {
                              presence
                                "Indicates a always node is configured.";
                              description
                                "Allow comparing MED from different neighbors";
                            }  // container always
    
                            container missing-as-worst {
                              presence
                                "Indicates a missing-as-worst node is configured.";
                              description
                                "Treat missing MED as the least preferred one";
                            }  // container missing-as-worst
                          }  // container med
    
                          container origin-as {
                            description
                              "BGP origin-AS knobs";
                            container use {
                              description
                                "BGP origin-AS knobs";
                              container validity {
                                presence
                                  "Indicates a validity node is configured.";
                                description
                                  "BGP bestpath selection will use origin-AS validity";
                              }  // container validity
                            }  // container use
    
                            container allow {
                              description
                                "BGP origin-AS knobs";
                              container invalid {
                                presence
                                  "Indicates a invalid node is configured.";
                                description
                                  "BGP bestpath selection will allow 'invalid' origin-AS";
                              }  // container invalid
                            }  // container allow
                          }  // container origin-as
    
                          container sr-policy {
                            description
                              "Paths over SR-policy";
                            container prefer {
                              presence
                                "Indicates a sr-policy node is configured.";
                              description
                                "Consider only paths over SR Policy for bestpath selection";
                            }  // container prefer
                          }  // container sr-policy
                        }  // container bestpath
    
                        container default {
                          description
                            "Configure default value";
                          leaf local-preference {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "Local preference";
                          }
                        }  // container default
    
                        container enforce-first-as {
                          description
                            "Enforce the first AS for EBGP routes";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable";
                          }  // container disable
                        }  // container enforce-first-as
    
                        container fast-external-fallover {
                          description
                            "Immediately reset session if a link to a directly connected external peer goes down";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable";
                          }  // container disable
                        }  // container fast-external-fallover
    
                        container log {
                          description
                            "Log bgp info";
                          container neighbor {
                            description
                              "Log neighbor state info";
                            container changes {
                              description
                                "Log neighbor up/down and reset reason";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable logging";
                              }  // container disable
                            }  // container changes
                          }  // container neighbor
    
                          container message {
                            description
                              "Log neighbor inbound/outbound message";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable inbound and outbound message logging for all neighbors under the vrf";
                            }  // container disable
                          }  // container message
                        }  // container log
    
                        container multipath {
                          description
                            "Change multipath selection criteria";
                          container as-path {
                            description
                              "AS path";
                            container ignore {
                              description
                                "Ignore as-path related check for multipath selection";
                              container exact-match {
                                presence
                                  "Indicates a exact-match node is configured.";
                                description
                                  "Ignore as-path for multipath selection";
                              }  // container exact-match
    
                              container onwards {
                                presence
                                  "Indicates a onwards node is configured.";
                                description
                                  "Ignore everything onwards as-path for multipath selection";
                              }  // container onwards
                            }  // container ignore
                          }  // container as-path
                        }  // container multipath
    
                        container redistribute-internal {
                          presence
                            "Indicates a redistribute-internal node is configured.";
                          description
                            "Allow redistribution of iBGP into IGPs (dangerous)";
                        }  // container redistribute-internal
    
                        leaf router-id {
                          type inet:ipv4-address-no-zone;
                          description
                            "Configure Router-id";
                        }
    
                        container unsafe-ebgp-policy {
                          presence
                            "Indicates a unsafe-ebgp-policy node is configured.";
                          description
                            "Make eBGP neighbors with no policy pass all routes";
                        }  // container unsafe-ebgp-policy
    
                        container origin-as {
                          description
                            "BGP origin-AS knobs";
                          container validation {
                            description
                              "BGP origin-AS validation knobs";
                            container signal {
                              description
                                "Signal origin-AS validity towards peers";
                              container ibgp {
                                presence
                                  "Indicates a ibgp node is configured.";
                                description
                                  "Signal origin-AS validity towards iBGP peers";
                              }  // container ibgp
                            }  // container signal
    
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable RPKI origin-AS validation";
                            }  // container disable
                          }  // container validation
                        }  // container origin-as
                      }  // container bgp
    
                      container bfd {
                        description
                          "Configure BFD parameters";
                        leaf minimum-interval {
                          type uint32 {
                            range "3..30000";
                          }
                          description
                            "Hello interval";
                        }
    
                        leaf multiplier {
                          type uint32 {
                            range "2..16";
                          }
                          description
                            "Detect multiplier";
                        }
                      }  // container bfd
    
                      container rd {
                        must
                          "auto or two-byte-as or four-byte-as or ip-address";
                        presence
                          "Indicates a rd node is configured.";
                        description
                          "route distinguisher";
                        container auto {
                          must
                            "not(../two-byte-as or ../four-byte-as or ../ip-address)";
                          presence
                            "Indicates a auto node is configured.";
                          description
                            "Automatic route distinguisher";
                        }  // container auto
    
                        container two-byte-as {
                          must
                            "not(../auto or ../four-byte-as or ../ip-address)";
                          presence
                            "Indicates a two-byte-as node is configured.";
                          leaf as-number {
                            type xr:Bgp-as-number;
                            mandatory true;
                            description
                              "bgp as-number";
                          }
    
                          leaf index {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            mandatory true;
                            description
                              "ASN2:index (hex or decimal format)";
                          }
                        }  // container two-byte-as
    
                        container four-byte-as {
                          must
                            "not(../auto or ../two-byte-as or ../ip-address)";
                          presence
                            "Indicates a four-byte-as node is configured.";
                          leaf as-number {
                            type xr:Bgp-as-number;
                            mandatory true;
                            description
                              "4-byte AS number";
                          }
    
                          leaf index {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            mandatory true;
                            description
                              "ASN2:index (hex or decimal format)";
                          }
                        }  // container four-byte-as
    
                        container ip-address {
                          must
                            "not(../auto or ../two-byte-as or ../four-byte-as)";
                          presence
                            "Indicates a ip-address node is configured.";
                          description
                            "configure this node";
                          leaf ipv4-address {
                            type inet:ipv4-address-no-zone;
                            mandatory true;
                            description
                              "configure this node";
                          }
    
                          leaf index {
                            type uint32 {
                              range "0..65535";
                            }
                            mandatory true;
                            description
                              "IPv4Address:index (hex or decimal format)";
                          }
                        }  // container ip-address
                      }  // container rd
                    }  // list vrf
                  }  // container vrfs
                }  // list as
              }  // list instance
            }  // container instances
    
            list as {
              key "as-number";
              description "bgp as-number";
              leaf as-number {
                type xr:Bgp-as-number;
                description "bgp as-number";
              }
    
              container rpki {
                description "Configure RPKI";
                container servers {
                  description
                    "Configure RPKI cache-servers";
                  list server {
                    key "server-id";
                    description
                      "Configure RPKI cache-servers";
                    leaf server-id {
                      type xr:Cisco-ios-xr-string {
                        length "1..1024";
                      }
                      description
                        "Configure RPKI cache-servers";
                    }
    
                    container bind-source {
                      description
                        "Specify a bind source for RPKI cache-server";
                      container interface {
                        description
                          "Specify a source interface to bind the cache-server transport";
                        leaf interface-name {
                          type xr:Interface-name;
                          description
                            "Interface Name";
                        }
                      }  // container interface
                    }  // container bind-source
    
                    container refresh-time {
                      description
                        "Time between sending serial-queries for the RPKI cache-server";
                      leaf refresh-time-value {
                        type uint32 {
                          range "15..3600";
                        }
                        description
                          "Refresh time (in seconds)";
                      }
    
                      container off {
                        presence
                          "Indicates a off node is configured.";
                        description
                          "Do not send serial-queries periodically";
                      }  // container off
                    }  // container refresh-time
    
                    container response-time {
                      description
                        "Time to wait for a response from the RPKI cache-server";
                      leaf response-time-value {
                        type uint32 {
                          range "15..3600";
                        }
                        description
                          "Response time (in seconds)";
                      }
    
                      container off {
                        presence
                          "Indicates a off node is configured.";
                        description
                          "Wait indefinitely for a response";
                      }  // container off
                    }  // container response-time
    
                    leaf purge-time {
                      type uint32 {
                        range "30..65535";
                      }
                      description
                        "Purge time (in seconds)";
                    }
    
                    leaf username {
                      type string {
                        length "1..1024";
                      }
                      description
                        "Specify a (SSH) username for the RPKI cache-server";
                    }
    
                    leaf password {
                      type string {
                        length "1..1024";
                      }
                      description
                        "Specify a (SSH) password for the RPKI cache-server";
                    }
    
                    container transport {
                      description
                        "Specify a transport method for the RPKI cache-server";
                      container tcp {
                        description
                          "Connect to the RPKI cache-server using TCP (unencrypted)";
                        leaf port {
                          type uint32 {
                            range "1..65535";
                          }
                          must
                            "not(../../ssh/port)";
                          description
                            "Specify a port number for the RPKI cache-server transport";
                        }
                      }  // container tcp
    
                      container ssh {
                        description
                          "Connect to the RPKI cache-server using SSH";
                        leaf port {
                          type uint32 {
                            range "1..65535";
                          }
                          must
                            "not(../../tcp/port)";
                          description
                            "Specify a port number for the RPKI cache-server transport";
                        }
                      }  // container ssh
                    }  // container transport
    
                    container shutdown {
                      presence
                        "Indicates a shutdown node is configured.";
                      description
                        "Shutdown the RPKI cache-server";
                    }  // container shutdown
                  }  // list server
                }  // container servers
    
                container routes {
                  description
                    "Configure an RPKI route";
                  list route {
                    key "address minimum-prefix-length maximum-prefix-length origin-as-number";
                    description
                      "Configure an RPKI route";
                    leaf address {
                      type inet:ip-address-no-zone;
                      description
                        "Configure an RPKI route";
                    }
    
                    leaf minimum-prefix-length {
                      type union {
                        type uint32 {
                          range "0..32";
                        }
                        type uint32 {
                          range "0..128";
                        }
                      }
                      description
                        "Minimum prefix length";
                    }
    
                    leaf maximum-prefix-length {
                      type union {
                        type uint32 {
                          range "1..32";
                        }
                        type uint32 {
                          range "1..128";
                        }
                      }
                      description
                        "Maximum prefix length (Default 32/128 for IPv4/IPv6)";
                    }
    
                    leaf origin-as-number {
                      type uint32 {
                        range "1..4294967295";
                      }
                      description
                        "Origin Autonomous System number";
                    }
                  }  // list route
                }  // container routes
              }  // container rpki
    
              container address-families {
                description
                  "Enter Address Family command mode";
                list address-family {
                  key "af-name";
                  description
                    "Enter Address Family command mode";
                  leaf af-name {
                    type Bgp-address-family;
                    description
                      "Enter Address Family command mode";
                  }
    
                  container vrf {
                    when
                      "../af-name = 'vpnv4-unicast' or ../af-name = 'vpnv6-unicast'";
                    description
                      "Specify configurations to be inherited to all vrfs";
                    container all {
                      presence
                        "Indicates a all node is configured.";
                      description
                        "Specify configurations to be inherited to all vrfs";
                      container source {
                        description
                          "Source import route-targets from import-policy";
                        container rt {
                          description
                            "Source import route-targets from import-policy";
                          container import-policy {
                            presence
                              "Indicates a import-policy node is configured.";
                            description
                              "Source import route-targets from import-policy";
                          }  // container import-policy
                        }  // container rt
                      }  // container source
    
                      container label {
                        description
                          "Label-related configuration";
                        container mode {
                          description
                            "Select label mode";
                          container per-ce {
                            must
                              "not(../per-vrf or ../route-policy)";
                            presence
                              "Indicates a per-ce node is configured.";
                            description
                              "Set per CE label mode";
                          }  // container per-ce
    
                          container per-vrf {
                            must
                              "not(../per-ce or ../route-policy)";
                            presence
                              "Indicates a per-vrf node is configured.";
                            description
                              "Set per VRF label mode";
                          }  // container per-vrf
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            must
                              "not(../per-ce or ../per-vrf)";
                            description
                              "Use a route policy to select prefixes for label allocation mode";
                          }
                        }  // container mode
                      }  // container label
    
                      container rnh {
                        description
                          "Remote nexthop";
                        container install {
                          description
                            "Install remote nexthop";
                          container extcomm {
                            presence
                              "Indicates a extcomm node is configured.";
                            description
                              "Install remote nexthop in extended community and opaque format";
                            container only {
                              presence
                                "Indicates a only node is configured.";
                              description
                                "Install remote nexthop in extended community format only";
                            }  // container only
                          }  // container extcomm
                        }  // container install
                      }  // container rnh
    
                      leaf table-policy {
                        type xr:Route-policy-name;
                        description
                          "Configure policy for installation of routes to RIB";
                      }
    
                      container segment-routing {
                        description
                          "Segment Routing";
                        container srv6 {
                          presence
                            "Indicates a srv6 node is configured.";
                          description
                            "Specify SRv6 configurations";
                          container alloc {
                            description
                              "SID Allocation";
                            container mode {
                              description
                                "SID Allocation mode";
                              container per-ce {
                                must
                                  "not(../per-vrf)";
                                presence
                                  "Indicates a per-ce node is configured.";
                                description
                                  "Set per CE label mode";
                              }  // container per-ce
    
                              container per-vrf {
                                must
                                  "not(../per-ce)";
                                presence
                                  "Indicates a per-vrf node is configured.";
                                description
                                  "Set per VRF label mode";
                              }  // container per-vrf
                            }  // container mode
                          }  // container alloc
    
                          leaf locator {
                            type xr:Cisco-ios-xr-string {
                              length "1..1024";
                            }
                            description
                              "Specify locator";
                          }
                        }  // container srv6
                      }  // container segment-routing
                    }  // container all
                  }  // container vrf
    
                  container domain-distinguisher {
                    when
                      "../af-name = 'link-state-link-state'";
                    presence
                      "Indicates a domain-distinguisher node is configured.";
                    description
                      "Globally unique identifier for IGP domain";
                    leaf domain-distinguisher-id {
                      type uint32 {
                        range "1..4294967295";
                      }
                      mandatory true;
                      description
                        "Globally unique identifier for IGP domain";
                    }
    
                    leaf ip-address {
                      type inet:ipv4-address-no-zone;
                      mandatory true;
                      description
                        "configure this node";
                    }
                  }  // container domain-distinguisher
    
                  container distance {
                    when
                      "../af-name != 'vpn4-unicast' and ../af-name != 'vpnv4-multicast' and ../af-name != 'vpnv6-unicast' and ../af-name != 'vpnv6-multicast' and ../af-name != 'vpnv4-mdt' and ../af-name != 'l2vpn-vpls-vpws' and ../af-name != 'l2vpn-evpn' and ../af-name != 'l2vpn-mspw' and ../af-name != 'ipv4-mvpn' and ../af-name != 'ipv6-mvpn' and ../af-name != 'ipv4-tunnel' and ../af-name != 'ipv4-rt-filter' and ../af-name != 'link-state-link-state' and ../af-name != 'ipv4-flowspec' and ../af-name != 'ipv6-flowspec' and ../af-name != 'vpnv4-flowspec' and ../af-name != 'vpnv6-flowspec' and ../af-name != 'ipv4-sr-policy' and ../af-name != 'ipv6-sr-policy'";
                    description
                      "Define an administrative distance";
                    container bgp {
                      presence
                        "Indicates a bgp node is configured.";
                      description "BGP distance";
                      leaf external-routes {
                        type uint32 {
                          range "1..255";
                        }
                        mandatory true;
                        description
                          "BGP distance";
                      }
    
                      leaf internal-routes {
                        type uint32 {
                          range "1..255";
                        }
                        mandatory true;
                        description
                          "Distance for routes internal to the AS";
                      }
    
                      leaf local-routes {
                        type uint32 {
                          range "1..255";
                        }
                        mandatory true;
                        description
                          "Distance for local routes";
                      }
                    }  // container bgp
                  }  // container distance
    
                  container optimal-route-reflection {
                    when
                      "../af-name != 'vpn4-unicast' and ../af-name != 'vpnv4-multicast' and ../af-name != 'vpnv6-unicast' and ../af-name != 'vpnv6-multicast' and ../af-name != 'vpnv4-mdt' and ../af-name != 'l2vpn-vpls-vpws' and ../af-name != 'l2vpn-evpn' and ../af-name != 'l2vpn-mspw' and ../af-name != 'ipv4-mvpn' and ../af-name != 'ipv6-mvpn' and ../af-name != 'ipv4-tunnel' and ../af-name != 'ipv4-rt-filter' and ../af-name != 'link-state-link-state' and ../af-name != 'ipv4-flowspec' and ../af-name != 'ipv6-flowspec' and ../af-name != 'vpnv4-flowspec' and ../af-name != 'vpnv6-flowspec' and ../af-name != 'ipv4-sr-policy' and ../af-name != 'ipv6-sr-policy'";
                    description
                      "Configure optimal-route-reflection group";
                    list orr-group {
                      key "orr-group-name";
                      description
                        "ORR group name - maximum 32 characters";
                      leaf orr-group-name {
                        type string {
                          length "1..32";
                        }
                        description
                          "ORR group name - maximum 32 characters";
                      }
    
                      leaf primary-address {
                        type inet:ip-address-no-zone;
                        mandatory true;
                        description
                          "IPv4 primary address";
                      }
    
                      leaf secondary-address {
                        type inet:ip-address-no-zone;
                        description
                          "IPv4 secondary address";
                      }
    
                      leaf tertiary-address {
                        type inet:ip-address-no-zone;
                        must
                          "../secondary-address";
                        description
                          "IPv4 tertiary address";
                      }
                    }  // list orr-group
    
                    list apply {
                      key "orr-group-name";
                      description
                        "Apply optimal-route-reflection group";
                      leaf orr-group-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..32";
                        }
                        description
                          "ORR group name - maximum 32 characters";
                      }
                    }  // list apply
    
                    container fallback-default-bestpath {
                      presence
                        "Indicates an ebgp node is configured.";
                      description
                        "In case none of the paths are accessible in
    an ORR table, fallback to default table bestpath
    as ORR bestpath";
                    }  // container fallback-default-bestpath
                  }  // container optimal-route-reflection
    
                  container maximum-paths {
                    when
                      "../af-name != 'vpn4-unicast' and ../af-name != 'vpnv4-multicast' and ../af-name != 'vpnv6-unicast' and ../af-name != 'vpnv6-multicast' and ../af-name != 'vpnv4-mdt' and ../af-name != 'l2vpn-vpls-vpws' and ../af-name != 'l2vpn-evpn' and ../af-name != 'l2vpn-mspw' and ../af-name != 'ipv4-mvpn' and ../af-name != 'ipv6-mvpn' and ../af-name != 'ipv4-tunnel' and ../af-name != 'ipv4-rt-filter' and ../af-name != 'link-state-link-state' and ../af-name != 'ipv4-flowspec' and ../af-name != 'ipv6-flowspec' and ../af-name != 'vpnv4-flowspec' and ../af-name != 'vpnv6-flowspec' and ../af-name != 'ipv4-sr-policy' and ../af-name != 'ipv6-sr-policy'";
                    description
                      "Forward packets over multiple paths";
                    container ebgp {
                      presence
                        "Indicates an ebgp node is configured.";
                      description
                        "eBGP-multipath";
                      leaf multipath {
                        type uint32 {
                          range "2..128";
                        }
                        mandatory true;
                        description
                          "eBGP-multipath";
                      }
    
                      container selective {
                        presence
                          "Indicates a selective node is configured.";
                        description
                          "Allow multipaths only from marked neighbors";
                      }  // container selective
    
                      container order {
                        description
                          "Order candidate multipaths for selection as per configured number";
                        container igp-metric {
                          presence
                            "Indicates an igp-metric node is configured.";
                          description
                            "Order by IGP metric ";
                        }  // container igp-metric
                      }  // container order
                    }  // container ebgp
    
                    container eibgp {
                      presence
                        "Indicates an eibgp node is configured.";
                      description
                        "eiBGP-multipath";
                      leaf multipath {
                        type uint32 {
                          range "2..128";
                        }
                        mandatory true;
                        description
                          "eiBGP-multipath";
                      }
    
                      container selective {
                        presence
                          "Indicates a selective node is configured.";
                        description
                          "Allow multipaths only from marked neighbors";
                      }  // container selective
    
                      container order {
                        description
                          "Order candidate multipaths for selection as per configured number";
                        container igp-metric {
                          presence
                            "Indicates an igp-metric node is configured.";
                          description
                            "Order by IGP metric ";
                        }  // container igp-metric
                      }  // container order
                    }  // container eibgp
    
                    container ibgp {
                      presence
                        "Indicates an ibgp node is configured.";
                      description
                        "iBGP-multipath";
                      leaf multipath {
                        type uint32 {
                          range "2..128";
                        }
                        mandatory true;
                        description
                          "iBGP-multipath";
                      }
    
                      container selective {
                        presence
                          "Indicates a selective node is configured.";
                        description
                          "Allow multipaths only from marked neighbors";
                      }  // container selective
    
                      container order {
                        description
                          "Order candidate multipaths for selection as per configured number";
                        container igp-metric {
                          presence
                            "Indicates an igp-metric node is configured.";
                          description
                            "Order by IGP metric ";
                        }  // container igp-metric
                      }  // container order
    
                      container unequal-cost {
                        presence
                          "Indicates an unequal-cost node is configured.";
                        description
                          "Allow multipaths to have different BGP nexthop IGP metrics ";
                      }  // container unequal-cost
                    }  // container ibgp
                  }  // container maximum-paths
    
                  container additional-paths {
                    when
                      "../af-name != 'ipv4-multicast' and ../af-name != 'ipv6-multicast' and ../af-name != 'ipv4-mdt' and ../af-name != 'l2vpn-vpls-vpws' and ../af-name != 'ipv4-tunnel'";
                    description
                      "Additional paths configuration";
                    container send {
                      presence
                        "Indicates a send node is configured.";
                      description
                        "Additional paths Send capability";
                    }  // container send
    
                    container receive {
                      presence
                        "Indicates a receive node is configured.";
                      description
                        "Additional paths Receive capability";
                    }  // container receive
    
                    container selection {
                      description
                        "Additional paths selection";
                      leaf route-policy {
                        type xr:Route-policy-name;
                        description
                          "Route-policy for additional paths selection";
                      }
                    }  // container selection
                  }  // container additional-paths
    
                  container permanent-network {
                    description
                      "Permanent network configuration";
                    leaf route-policy {
                      type xr:Route-policy-name;
                      description
                        "Route policy to read the prefixes from";
                    }
                  }  // container permanent-network
    
                  container advertise {
                    description
                      "Advertise BGP path";
                    container best-external {
                      presence
                        "Indicates a best-external node is configured.";
                      description
                        "Advertise best-external path";
                      container labeled-unicast {
                        must "not(../disable)";
                        presence
                          "Indicates a labeled-unicast node is configured.";
                        description
                          "Limit best-external to Labeled-Unicast address family";
                      }  // container labeled-unicast
    
                      container disable {
                        must
                          "not(../labeled-unicast)";
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Do not advertise best-external path";
                      }  // container disable
                    }  // container best-external
    
                    container local-labeled-route {
                      when
                        "../../af-name = 'ipv4-unicast' or ../../af-name = 'ipv6-unicast'";
                      description
                        "Advertisement of routes with local-label";
                      container safi-unicast {
                        description
                          "Advertisement of routes with local-label via Unicast SAFI";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Do not advertise routes with local-label via Unicast SAFI";
                        }  // container disable
                      }  // container safi-unicast
                    }  // container local-labeled-route
                  }  // container advertise
    
                  container nexthop {
                    description "Nexthop";
                    container resolution {
                      description
                        "Nexthop resolution";
                      container prefix-length {
                        description
                          "Nexthop resolution prefix-length";
                        leaf minimum {
                          type union {
                            type uint32 {
                              range "0..32";
                            }
                            type uint32 {
                              range "0..128";
                            }
                          }
                          description
                            "Set minimum prefix-length for nexthop resolution";
                        }
    
                        leaf ipv6 {
                          type uint32 {
                            range "0..128";
                          }
                          description
                            "IPv6 Prefix-length value";
                        }
                      }  // container prefix-length
                    }  // container resolution
    
                    container trigger-delay {
                      description
                        "Processing trigger delay";
                      leaf critical {
                        type uint32 {
                          range "0..4294967295";
                        }
                        description
                          "For critical notification";
                      }
    
                      leaf non-critical {
                        type uint32 {
                          range "0..4294967295";
                        }
                        description
                          "For non-critical notification";
                      }
                    }  // container trigger-delay
    
                    leaf route-policy {
                      type xr:Route-policy-name;
                      description
                        "Policy to filter out nexthop notification";
                    }
                  }  // container nexthop
    
                  container networks {
                    description
                      "Specify a network to announce via BGP";
                    list network {
                      key "address masklength";
                      description
                        "IPv6 network and mask or masklength";
                      leaf address {
                        type inet:ip-address-no-zone;
                        description
                          "IPv6 network and mask or masklength";
                      }
    
                      leaf masklength {
                        type uint16 {
                          range "0..128";
                        }
                        description
                          "Network in prefix/length format (prefix part)";
                      }
    
                      leaf route-policy {
                        type xr:Route-policy-name;
                        description
                          "Route-policy to modify the attributes";
                      }
    
                      container backdoor {
                        presence
                          "Indicates a backdoor node is configured.";
                        description
                          "Specify a BGP backdoor route";
                      }  // container backdoor
    
                      container multipath {
                        presence
                          "Indicates a backdoor node is configured.";
                        description
                          "Enable installation of multiple paths from RIB";
                      }  // container multipath
                    }  // list network
                  }  // container networks
    
                  container aggregate-addresses {
                    description
                      "Configure BGP aggregate entries";
                    list aggregate-address {
                      key "address masklength";
                      description
                        "IPv6 Aggregate address and mask or masklength";
                      leaf address {
                        type inet:ip-address-no-zone;
                        description
                          "IPv6 Aggregate address and mask or masklength";
                      }
    
                      leaf masklength {
                        type uint16 {
                          range "0..128";
                        }
                        description
                          "Network in prefix/length format (prefix part)";
                      }
    
                      container as-set {
                        presence
                          "Indicates a as-set node is configured.";
                        description
                          "Generate AS set path information";
                      }  // container as-set
    
                      container as-confed-set {
                        presence
                          "Indicates a as-confed-set node is configured.";
                        description
                          "Generate AS confed set path information";
                      }  // container as-confed-set
    
                      container summary-only {
                        presence
                          "Indicates a summary-only node is configured.";
                        description
                          "Filter more specific routes from updates";
                      }  // container summary-only
    
                      leaf route-policy {
                        type xr:Route-policy-name;
                        description
                          "Policy to condition advertisement, suppression, and attributes";
                      }
                    }  // list aggregate-address
                  }  // container aggregate-addresses
    
                  container redistribute {
                    when
                      "../af-name = 'ipv4-unicast' or ../af-name = 'ipv4-multicast' or ../af-name = 'ipv6-unicast' or ../af-name = 'ipv6-multicast'";
                    description
                      "Redistribute information from another routing protocol";
                    list ospf {
                      key "router-tag";
                      description
                        "Open Shortest Path First (OSPF or OSPFv3)";
                      leaf router-tag {
                        type xr:Cisco-ios-xr-string {
                          length "1..1024";
                        }
                        description
                          "Open Shortest Path First (OSPF)";
                      }
    
                      container match {
                        presence
                          "Indicates a match node is configured.";
                        description
                          "Redistribution of OSPF routes";
                        container internal {
                          presence
                            "Indicates a internal node is configured.";
                          description
                            "Redistribute OSPF internal routes";
                          container external {
                            presence
                              "Indicates a external node is configured.";
                            description
                              "Redistribute OSPF external routes";
                            container one {
                              presence
                                "Indicates a one node is configured.";
                              description
                                "Redistribute external type 1 routes";
                              container nssa-external {
                                presence
                                  "Indicates a nssa-external node is configured.";
                                description
                                  "Redistribute OSPF NSSA external routes";
                                container one {
                                  presence
                                    "Indicates a one node is configured.";
                                  description
                                    "Redistribute NSSA external type 1 routes";
                                }  // container one
    
                                container two {
                                  presence
                                    "Indicates a two node is configured.";
                                  description
                                    "Redistribute NSSA external type 2 routes";
                                }  // container two
                              }  // container nssa-external
                            }  // container one
    
                            container two {
                              presence
                                "Indicates a two node is configured.";
                              description
                                "Redistribute external type 2 routes";
                              container nssa-external {
                                presence
                                  "Indicates a nssa-external node is configured.";
                                description
                                  "Redistribute OSPF NSSA external routes";
                                container one {
                                  presence
                                    "Indicates a one node is configured.";
                                  description
                                    "Redistribute NSSA external type 1 routes";
                                }  // container one
    
                                container two {
                                  presence
                                    "Indicates a two node is configured.";
                                  description
                                    "Redistribute NSSA external type 2 routes";
                                }  // container two
                              }  // container nssa-external
                            }  // container two
    
                            container nssa-external {
                              presence
                                "Indicates a nssa-external node is configured.";
                              description
                                "Redistribute OSPF NSSA external routes";
                              container one {
                                presence
                                  "Indicates a one node is configured.";
                                description
                                  "Redistribute NSSA external type 1 routes";
                              }  // container one
    
                              container two {
                                presence
                                  "Indicates a two node is configured.";
                                description
                                  "Redistribute NSSA external type 2 routes";
                              }  // container two
                            }  // container nssa-external
                          }  // container external
    
                          container nssa-external {
                            presence
                              "Indicates a nssa-external node is configured.";
                            description
                              "Redistribute OSPF NSSA external routes";
                            container one {
                              presence
                                "Indicates a one node is configured.";
                              description
                                "Redistribute NSSA external type 1 routes";
                            }  // container one
    
                            container two {
                              presence
                                "Indicates a two node is configured.";
                              description
                                "Redistribute NSSA external type 2 routes";
                            }  // container two
                          }  // container nssa-external
                        }  // container internal
    
                        container external {
                          presence
                            "Indicates a external node is configured.";
                          description
                            "Redistribute OSPF external routes";
                          container one {
                            presence
                              "Indicates a one node is configured.";
                            description
                              "Redistribute external type 1 routes";
                            container nssa-external {
                              presence
                                "Indicates a nssa-external node is configured.";
                              description
                                "Redistribute OSPF NSSA external routes";
                              container one {
                                presence
                                  "Indicates a one node is configured.";
                                description
                                  "Redistribute NSSA external type 1 routes";
                              }  // container one
    
                              container two {
                                presence
                                  "Indicates a two node is configured.";
                                description
                                  "Redistribute NSSA external type 2 routes";
                              }  // container two
                            }  // container nssa-external
                          }  // container one
    
                          container two {
                            presence
                              "Indicates a two node is configured.";
                            description
                              "Redistribute external type 2 routes";
                            container nssa-external {
                              presence
                                "Indicates a nssa-external node is configured.";
                              description
                                "Redistribute OSPF NSSA external routes";
                              container one {
                                presence
                                  "Indicates a one node is configured.";
                                description
                                  "Redistribute NSSA external type 1 routes";
                              }  // container one
    
                              container two {
                                presence
                                  "Indicates a two node is configured.";
                                description
                                  "Redistribute NSSA external type 2 routes";
                              }  // container two
                            }  // container nssa-external
                          }  // container two
    
                          container nssa-external {
                            presence
                              "Indicates a nssa-external node is configured.";
                            description
                              "Redistribute OSPF NSSA external routes";
                            container one {
                              presence
                                "Indicates a one node is configured.";
                              description
                                "Redistribute NSSA external type 1 routes";
                            }  // container one
    
                            container two {
                              presence
                                "Indicates a two node is configured.";
                              description
                                "Redistribute NSSA external type 2 routes";
                            }  // container two
                          }  // container nssa-external
                        }  // container external
    
                        container nssa-external {
                          presence
                            "Indicates a nssa-external node is configured.";
                          description
                            "Redistribute OSPF NSSA external routes";
                          container one {
                            presence
                              "Indicates a one node is configured.";
                            description
                              "Redistribute NSSA external type 1 routes";
                          }  // container one
    
                          container two {
                            presence
                              "Indicates a two node is configured.";
                            description
                              "Redistribute NSSA external type 2 routes";
                          }  // container two
                        }  // container nssa-external
                      }  // container match
    
                      container multipath {
                        presence
                          "Indicates a multipath node is configured.";
                        description
                          "Enable installation of multiple paths from RIB";
                      }  // container multipath
    
                      leaf metric {
                        type uint32 {
                          range "0..4294967295";
                        }
                        description
                          "Metric for redistributed routes";
                      }
    
                      leaf route-policy {
                        type xr:Route-policy-name;
                        description
                          "Route policy reference";
                      }
                    }  // list ospf
    
                    list eigrp {
                      key "instance-name";
                      description
                        "Enhanced Interior Gateway Routing Protocol (EIGRP)";
                      leaf instance-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..1024";
                        }
                        description
                          "Enhanced Interior Gateway Routing Protocol (EIGRP)";
                      }
    
                      container match {
                        description
                          "EIGRP route type for redistribution";
                        container internal {
                          presence
                            "Indicates a internal node is configured.";
                          description
                            "Redistribute EIGRP internal routes";
                          container external {
                            presence
                              "Indicates a external node is configured.";
                            description
                              "Redistribute EIGRP external routes";
                          }  // container external
                        }  // container internal
    
                        container external {
                          presence
                            "Indicates a external node is configured.";
                          description
                            "Redistribute EIGRP external routes";
                        }  // container external
                      }  // container match
    
                      container multipath {
                        presence
                          "Indicates a multipath node is configured.";
                        description
                          "Enable installation of multiple paths from RIB";
                      }  // container multipath
    
                      leaf metric {
                        type uint32 {
                          range "0..4294967295";
                        }
                        description
                          "Metric for redistributed routes";
                      }
    
                      leaf route-policy {
                        type xr:Route-policy-name;
                        description
                          "Route policy reference";
                      }
                    }  // list eigrp
    
                    list isis {
                      key "instance-name";
                      description "ISO IS-IS";
                      leaf instance-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..1024";
                        }
                        description "ISO IS-IS";
                      }
    
                      container level {
                        description
                          "Redistribute routes from the specified ISIS levels";
                        container one {
                          presence
                            "Indicates a one node is configured.";
                          description
                            "Redistribute ISIS level 1 routes";
                          container two {
                            presence
                              "Indicates a two node is configured.";
                            description
                              "Redistribute ISIS level 2 ISIS routes";
                            container one-inter-area {
                              presence
                                "Indicates a one-inter-area node is configured.";
                              description
                                "Redistribute ISIS level 1 inter-area routes";
                            }  // container one-inter-area
                          }  // container two
    
                          container one-inter-area {
                            presence
                              "Indicates a one-inter-area node is configured.";
                            description
                              "Redistribute ISIS level 1 inter-area routes";
                          }  // container one-inter-area
                        }  // container one
    
                        container two {
                          presence
                            "Indicates a two node is configured.";
                          description
                            "Redistribute ISIS level 2 ISIS routes";
                          container one-inter-area {
                            presence
                              "Indicates a one-inter-area node is configured.";
                            description
                              "Redistribute ISIS level 1 inter-area routes";
                          }  // container one-inter-area
                        }  // container two
    
                        container one-inter-area {
                          presence
                            "Indicates a one-inter-area node is configured.";
                          description
                            "Redistribute ISIS level 1 inter-area routes";
                        }  // container one-inter-area
                      }  // container level
    
                      leaf metric {
                        type uint32 {
                          range "0..4294967295";
                        }
                        description
                          "Metric for redistributed routes";
                      }
    
                      leaf route-policy {
                        type xr:Route-policy-name;
                        description
                          "Route policy reference";
                      }
    
                      container multipath {
                        presence
                          "Indicates a multipath node is configured.";
                        description
                          "Enable installation of multiple paths from RIB";
                      }  // container multipath
                    }  // list isis
    
                    list application {
                      key "application-name";
                      description
                        "OnePK application routes";
                      leaf application-name {
                        type string {
                          length "1..1024";
                        }
                        description
                          "OnePK application name";
                      }
    
                      leaf metric {
                        type uint32 {
                          range "0..4294967295";
                        }
                        description
                          "Metric for redistributed routes";
                      }
    
                      leaf route-policy {
                        type xr:Route-policy-name;
                        description
                          "Route policy reference";
                      }
    
                      container multipath {
                        presence
                          "Indicates a multipath node is configured.";
                        description
                          "Enable installation of multiple paths from RIB";
                      }  // container multipath
                    }  // list application
    
                    container connected {
                      presence
                        "Indicates a connected node is configured.";
                      description
                        "Connected routes";
                      leaf metric {
                        type uint32 {
                          range "0..4294967295";
                        }
                        description
                          "Metric for redistributed routes";
                      }
    
                      leaf route-policy {
                        type xr:Route-policy-name;
                        description
                          "Route policy reference";
                      }
    
                      container multipath {
                        presence
                          "Indicates a multipath node is configured.";
                        description
                          "Enable installation of multiple paths from RIB";
                      }  // container multipath
                    }  // container connected
    
                    container lisp {
                      presence
                        "Indicates a lisp node is configured.";
                      description
                        "Locator/ID Separation Protocol (LISP)";
                      leaf metric {
                        type uint32 {
                          range "0..4294967295";
                        }
                        description
                          "Metric for redistributed routes";
                      }
    
                      leaf route-policy {
                        type xr:Route-policy-name;
                        description
                          "Route policy reference";
                      }
    
                      container multipath {
                        presence
                          "Indicates a multipath node is configured.";
                        description
                          "Enable installation of multiple paths from RIB";
                      }  // container multipath
                    }  // container lisp
    
                    container mobile {
                      presence
                        "Indicates a mobile node is configured.";
                      description
                        "Mobile routes";
                      leaf metric {
                        type uint32 {
                          range "0..4294967295";
                        }
                        description
                          "Metric for redistributed routes";
                      }
    
                      leaf route-policy {
                        type xr:Route-policy-name;
                        description
                          "Route policy reference";
                      }
    
                      container multipath {
                        presence
                          "Indicates a multipath node is configured.";
                        description
                          "Enable installation of multiple paths from RIB";
                      }  // container multipath
                    }  // container mobile
    
                    container rip {
                      when
                        "../../af-name = 'ipv4-unicast' or ../../af-name = 'ipv4-multicast'";
                      presence
                        "Indicates a rip node is configured.";
                      description
                        "Routing Information Protocol (RIP)";
                      leaf metric {
                        type uint32 {
                          range "0..4294967295";
                        }
                        description
                          "Metric for redistributed routes";
                      }
    
                      leaf route-policy {
                        type xr:Route-policy-name;
                        description
                          "Route policy reference";
                      }
    
                      container multipath {
                        presence
                          "Indicates a multipath node is configured.";
                        description
                          "Enable installation of multiple paths from RIB";
                      }  // container multipath
                    }  // container rip
    
                    container static {
                      presence
                        "Indicates a static node is configured.";
                      description
                        "Static routes";
                      leaf metric {
                        type uint32 {
                          range "0..4294967295";
                        }
                        description
                          "Metric for redistributed routes";
                      }
    
                      leaf route-policy {
                        type xr:Route-policy-name;
                        description
                          "Route policy reference";
                      }
    
                      container multipath {
                        presence
                          "Indicates a multipath node is configured.";
                        description
                          "Enable installation of multiple paths from RIB";
                      }  // container multipath
                    }  // container static
    
                    container subscriber {
                      presence
                        "Indicates a lisp node is configured.";
                      description
                        "subscriber routes";
                      leaf metric {
                        type uint32 {
                          range "0..4294967295";
                        }
                        description
                          "Metric for redistributed routes";
                      }
    
                      leaf route-policy {
                        type xr:Route-policy-name;
                        description
                          "Route policy reference";
                      }
    
                      container multipath {
                        presence
                          "Indicates a multipath node is configured.";
                        description
                          "Enable installation of multiple paths from RIB";
                      }  // container multipath
                    }  // container subscriber
                  }  // container redistribute
    
                  leaf table-policy {
                    type xr:Route-policy-name;
                    description
                      "Configure policy for installation of routes to RIB";
                  }
    
                  container retain {
                    description
                      "Accept/Retain specified bgp parameters";
                    leaf local-label {
                      when
                        "../../af-name = 'ipv4-unicast' or ../../af-name = 'vpnv4-unicast' or ../../af-name = 'vpnv4-multicast' or ../../af-name = 'vpnv6-unicast' or ../../af-name = 'vpnv6-multicast' or ../../af-name = 'ipv6-unicast'";
                      type uint32 {
                        range "3..60";
                      }
                      description
                        "Delay the release of the local label as configured";
                    }
    
                    container route-target {
                      when
                        "../../af-name = 'vpnv4-unicast' or ../../af-name = 'vpnv4-multicast' or ../../af-name = 'vpnv4-flowspec' or ../../af-name = 'vpnv6-unicast' or ../../af-name = 'vpnv6-multicast' or ../../af-name = 'vpnv6-flowspec' or ../../af-name = 'l2vpn-evpn' or ../../af-name = 'l2vpn-vpls-vpws' or ../../af-name = 'ipv4-mvpn' or ../../af-name = 'ipv6-mvpn'";
                      description
                        "Accept received updates with the specified route targets";
                      container all {
                        must
                          "not(../route-policy)";
                        presence
                          "Indicates a all node is configured.";
                        description
                          "Accept received updates containing at least one route target";
                      }  // container all
    
                      leaf route-policy {
                        type xr:Route-policy-name;
                        must "not(../all)";
                        description
                          "Accept received updates accepted by the specified policy";
                      }
                    }  // container route-target
                  }  // container retain
    
                  container allocate-label {
                    description
                      "Allocate label for selected prefixes";
                    container all {
                      presence
                        "Indicates a all node is configured.";
                      description
                        "Allocate labels for all prefixes";
                      container unlabeled-path {
                        presence
                          "Indicates a unlabeled-path node is configured.";
                        description
                          "Allocate label for unlabeled paths too";
                      }  // container unlabeled-path
                    }  // container all
    
                    leaf route-policy {
                      type xr:Route-policy-name;
                      description
                        "Use a route policy to select prefixes for label allocation";
                    }
                  }  // container allocate-label
    
                  container label {
                    description
                      "Label-related configuration";
                    container mode {
                      description
                        "Select label mode";
                      container per-ce {
                        when
                          "../../../af-name = 'ipv4-unicast' or ../../../af-name = 'ipv6-unicast'";
                        must
                          "not(../per-vrf or ../route-policy)";
                        presence
                          "Indicates a per-ce node is configured.";
                        description
                          "Set per CE label mode";
                      }  // container per-ce
    
                      container per-vrf {
                        when
                          "../../../af-name = 'ipv4-unicast' or ../../../af-name = 'ipv6-unicast'";
                        must
                          "not(../per-ce or ../route-policy)";
                        presence
                          "Indicates a per-vrf node is configured.";
                        description
                          "Set per VRF label mode";
                      }  // container per-vrf
    
                      leaf route-policy {
                        when
                          "../../../af-name = 'ipv4-unicast' or ../../../af-name = 'ipv6-unicast'";
                        type xr:Route-policy-name;
                        must
                          "not(../per-ce or ../per-vrf)";
                        description
                          "Use a route policy to select prefixes for label allocation mode";
                      }
    
                      container per-nexthop-received-label {
                        when
                          "../../../af-name = 'vpnv4-unicast' or ../../../af-name = 'vpnv6-unicast'";
                        presence
                          "Indicates a per-nexthop-received-label node is configured.";
                        description
                          "Set label mode per nexthop and received label";
                      }  // container per-nexthop-received-label
                    }  // container mode
                  }  // container label
    
                  container rnh {
                    description "Remote nexthop";
                    container install {
                      description
                        "Install remote nexthop";
                      container extcomm {
                        presence
                          "Indicates a extcomm node is configured.";
                        description
                          "Install remote nexthop in extended community and opaque format";
                        container only {
                          presence
                            "Indicates a only node is configured.";
                          description
                            "Install remote nexthop in extended community format only";
                        }  // container only
                      }  // container extcomm
                    }  // container install
                  }  // container rnh
    
                  container bgp {
                    description "BGP Commands";
                    container client-to-client {
                      description
                        "Configure client to client route reflection";
                      container reflection {
                        description "Reflection";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description "Disable";
                        }  // container disable
    
                        container cluster-id {
                          description
                            "ID of Cluster for which reflection is to be disabled";
                          container cluster-id-32bits {
                            description
                              "Route-Reflector Cluster-id as 32 bit quantity";
                            list cluster-id-32bit {
                              key "cluster-id";
                              description
                                "Route-Reflector Cluster-id as 32 bit quantity";
                              leaf cluster-id {
                                type uint32 {
                                  range
                                    "1..4294967295";
                                }
                                description
                                  "Route-Reflector Cluster-id as 32 bit quantity";
                              }
    
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable";
                              }  // container disable
                            }  // list cluster-id-32bit
                          }  // container cluster-id-32bits
    
                          container cluster-id-ip-addresses {
                            description
                              "Route-Reflector Cluster-id in IP address format";
                            list cluster-id-ip-address {
                              key "ip-address";
                              description
                                "Route-Reflector Cluster-id in IP address format";
                              leaf ip-address {
                                type inet:ipv4-address-no-zone;
                                description
                                  "Route-Reflector Cluster-id in IP address format";
                              }
    
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable";
                              }  // container disable
                            }  // list cluster-id-ip-address
                          }  // container cluster-id-ip-addresses
                        }  // container cluster-id
                      }  // container reflection
                    }  // container client-to-client
    
                    container dampening {
                      presence
                        "Indicates a dampening node is configured.";
                      description
                        "Enable route-flap dampening";
                      leaf half-life-time {
                        type uint32 {
                          range "1..45";
                        }
                        must
                          "not(../route-policy)";
                        description
                          "Half-life time for the penalty";
                      }
    
                      leaf start-reusing-route {
                        type uint32 {
                          range "1..20000";
                        }
                        must
                          "../half-life-time and ../start-suppressing-route";
                        description
                          "Value to start reusing a route";
                      }
    
                      leaf start-suppressing-route {
                        type uint32 {
                          range "1..20000";
                        }
                        must
                          "../start-reusing-route and ../maximum-duration";
                        description
                          "Value to start suppressing a route";
                      }
    
                      leaf maximum-duration {
                        type uint32 {
                          range "1..255";
                        }
                        must
                          "../start-suppressing-route";
                        description
                          "Maximum duration to suppress a stable route";
                      }
    
                      leaf route-policy {
                        type xr:Route-policy-name;
                        must
                          "not(../half-life-time)";
                        description
                          "Route policy to specify criteria for dampening";
                      }
                    }  // container dampening
    
                    container attribute-download {
                      presence
                        "Indicates a attribute-download node is configured.";
                      description
                        "Configure attribute download for this address-family";
                    }  // container attribute-download
    
                    container implicit-import {
                      presence
                        "Indicates a implicit-import node is configured.";
                      description
                        "Configure implicit import for this address-family";
                    }  // container implicit-import
    
                    container import-delay {
                      presence
                        "Indicates a import-delay node is configured.";
                      description
                        "Specify delay for batching import processing";
                      leaf delay-seconds {
                        type uint32 {
                          range "0..10";
                        }
                        mandatory true;
                        description
                          "Specify delay for batching import processing";
                      }
    
                      leaf delay-milliseconds {
                        type uint32 {
                          range "0..999";
                        }
                        mandatory true;
                        description
                          "Delay, milliseconds part";
                      }
                    }  // container import-delay
    
                    container label-delay {
                      presence
                        "Indicates a label-delay node is configured.";
                      description
                        "Specify delay for batching label processing";
                      leaf delay-seconds {
                        type uint32 {
                          range "0..10";
                        }
                        mandatory true;
                        description
                          "Specify delay for batching label processing";
                      }
    
                      leaf delay-milliseconds {
                        type uint32 {
                          range "0..999";
                        }
                        mandatory true;
                        description
                          "Delay, milliseconds part";
                      }
                    }  // container label-delay
    
                    leaf scan-time {
                      type uint32 {
                        range "5..3600";
                      }
                      description
                        "Configure background scanner interval for this address-family";
                    }
    
                    container origin-as {
                      description
                        "BGP origin-AS knobs";
                      container validation {
                        description
                          "BGP origin-AS validation knobs";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable RPKI origin-AS validation";
                        }  // container disable
    
                        container enable {
                          presence
                            "Indicates a enable node is configured.";
                          description
                            "Enable RPKI origin-AS validation";
                        }  // container enable
    
                        container signal {
                          description
                            "Signal origin-AS validity towards peers";
                          container ibgp {
                            presence
                              "Indicates a ibgp node is configured.";
                            description
                              "Signal origin-AS validity towards iBGP peers";
                          }  // container ibgp
                        }  // container signal
                      }  // container validation
                    }  // container origin-as
    
                    container bestpath {
                      description
                        "Change default route selection criteria";
                      container origin-as {
                        description
                          "BGP origin-AS knobs";
                        container use {
                          description
                            "BGP origin-AS knobs";
                          container validity {
                            presence
                              "Indicates a validity node is configured.";
                            description
                              "BGP bestpath selection will use origin-AS validity";
                          }  // container validity
                        }  // container use
    
                        container allow {
                          description
                            "BGP origin-AS knobs";
                          container invalid {
                            presence
                              "Indicates a invalid node is configured.";
                            description
                              "BGP bestpath selection will allow 'invalid' origin-AS";
                          }  // container invalid
                        }  // container allow
                      }  // container origin-as
                    }  // container bestpath
                  }  // container bgp
    
                  container event {
                    description
                      "Policy for per-prefix tracing";
                    container prefix {
                      description
                        "Policy for per-prefix tracing";
                      leaf route-policy {
                        type xr:Route-policy-name;
                        description
                          "Policy for per-prefix tracing";
                      }
                    }  // container prefix
                  }  // container event
    
                  container dynamic-med {
                    description
                      "Dynamic MED Interval";
                    leaf interval {
                      type uint32 {
                        range "0..10";
                      }
                      description
                        "Update generation delay (in minutes) after a MED change";
                    }
                  }  // container dynamic-med
    
                  container weight {
                    description
                      "Define or modify weight";
                    container reset-on-import {
                      presence
                        "Indicates a reset-on-import node is configured.";
                      description
                        "Reset weight of paths on import";
                      container disable {
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Do not reset weight of paths on import";
                      }  // container disable
                    }  // container reset-on-import
                  }  // container weight
    
                  container update {
                    description
                      "BGP Update generation configuration";
                    container limit {
                      description
                        "Upper bound on transient memory usage for update generation";
                      leaf address-family {
                        type uint32 {
                          range "4..2048";
                        }
                        description
                          "Update limit for address-family";
                      }
    
                      container sub-group {
                        description
                          "Update limit for sub-groups";
                        leaf ebgp {
                          type uint32 {
                            range "1..512";
                          }
                          description
                            "Update limit for eBGP sub-groups";
                        }
    
                        leaf ibgp {
                          type uint32 {
                            range "1..512";
                          }
                          description
                            "Update limit for iBGP sub-groups";
                        }
                      }  // container sub-group
                    }  // container limit
    
                    container wait-install {
                      presence
                        "Indicates a wait-install node is configured.";
                      description
                        "Wait for route install";
                    }  // container wait-install
                  }  // container update
    
                  container as-path-loopcheck {
                    description
                      "Configure AS Path loop checking";
                    container out {
                      description
                        "For outbound updates";
                      container disable {
                        presence
                          "Indicates a disable node is configured.";
                        description "Disable";
                      }  // container disable
                    }  // container out
                  }  // container as-path-loopcheck
    
                  container inter-as {
                    description "Inter AS";
                    container install {
                      presence
                        "Indicates a install node is configured.";
                      description
                        "Install remote mvpn routes in default vrf";
                    }  // container install
                  }  // container inter-as
    
                  container global-table-multicast {
                    presence
                      "Indicates a global-table-multicast node is configured.";
                    description
                      "Enable global table multicast";
                  }  // container global-table-multicast
    
                  container segmented-multicast {
                    presence
                      "Indicates a segmented-multicast node is configured.";
                    description
                      "Enable segmented multicast";
                  }  // container segmented-multicast
    
                  container label-security {
                    description
                      "BGP Label Security";
                    container asbr {
                      description
                        "Label Security for ASBR peers";
                      container rpf {
                        presence
                          "Indicates a rpf node is configured.";
                        description
                          "RPF Label Security for Option-B";
                      }  // container rpf
                    }  // container asbr
                  }  // container label-security
    
                  container default-martian-check {
                    description
                      "Martian check default";
                    container disable {
                      presence
                        "Indicates a disable node is configured.";
                      description "Disable";
                    }  // container disable
                  }  // container default-martian-check
    
                  container peer-set-ids {
                    when
                      "../af-name = 'ipv4-unicast' or ../af-name = 'ipv6-unicast'";
                    description
                      "configuration for a single EPE Peer Set";
                    list peer-set-id {
                      key "peer-set-id";
                      description
                        "configuration for a single EPE Peer Set";
                      leaf peer-set-id {
                        type uint32 {
                          range "1..255";
                        }
                        description
                          "configuration for a single EPE Peer Set";
                      }
    
                      container peer-set-sid {
                        description
                          "configure a SID for peer-set EPE object";
                        leaf index {
                          type uint32 {
                            range "0..1033575";
                          }
                          description
                            "Segment Index value to assign. This will be off SRLB range";
                        }
                      }  // container peer-set-sid
                    }  // list peer-set-id
                  }  // container peer-set-ids
    
                  container segment-routing {
                    when
                      "../af-name = 'ipv4-unicast' or ../af-name = 'ipv6-unicast'";
                    description
                      "Segment Routing";
                    container prefix-sid-map {
                      when
                        "../../af-name = 'ipv4-unicast'";
                      presence
                        "Indicates a prefix-sid-map node is configured.";
                      description
                        "Retrieve prefix id mapping from SRMS";
                    }  // container prefix-sid-map
    
                    container srv6 {
                      presence
                        "Indicates a srv6 node is configured.";
                      description
                        "Specify SRv6 configurations";
                      container alloc {
                        description
                          "SID Allocation";
                        container mode {
                          description
                            "SID Allocation mode";
                          container per-ce {
                            must
                              "not(../per-vrf)";
                            presence
                              "Indicates a per-ce node is configured.";
                            description
                              "Set per CE label mode";
                          }  // container per-ce
    
                          container per-vrf {
                            must
                              "not(../per-ce)";
                            presence
                              "Indicates a per-vrf node is configured.";
                            description
                              "Set per VRF label mode";
                          }  // container per-vrf
                        }  // container mode
                      }  // container alloc
    
                      leaf locator {
                        type xr:Cisco-ios-xr-string {
                          length "1..1024";
                        }
                        description
                          "Specify locator";
                      }
                    }  // container srv6
                  }  // container segment-routing
    
                  container option-b-asbr-only {
                    when
                      "../af-name = 'l2vpn-evpn'";
                    presence
                      "Indicates a prefix-sid-map node is configured.";
                    description
                      "Enable the ASBR router for option-B label exchange.This option makes the router an Option B ASBR for EVPN.Its assumed no DCI configs are present";
                  }  // container option-b-asbr-only
                }  // list address-family
              }  // container address-families
    
              container neighbors {
                description
                  "Specify a neighbor router";
                list neighbor {
                  key "neighbor-address";
                  description "Neighbor address";
                  leaf neighbor-address {
                    type inet:ip-address-no-zone;
                    description
                      "Neighbor address";
                  }
    
                  container address-families {
                    description
                      "Enter Address Family command mode";
                    list address-family {
                      key "af-name";
                      description
                        "Enter Address Family command mode";
                      leaf af-name {
                        type Bgp-address-family;
                        description
                          "Enter Address Family command mode";
                      }
    
                      container use {
                        description
                          "Inherit configuration for this address-family from a group";
                        leaf af-group {
                          type string {
                            length "1..1024";
                          }
                          description
                            "Inherit configuration for this address-family from an af-group";
                        }
                      }  // container use
    
                      container capability {
                        description
                          "Advertise capability to the peer";
                        container orf {
                          description
                            "Advertise ORF capability to the peer";
                          container prefix {
                            description
                              "Advertise address prefix ORF capability to this neighbor";
                            container receive {
                              must
                                "not(../send or ../both or ../none)";
                              presence
                                "Indicates a receive node is configured.";
                              description
                                "Capability to RECEIVE the ORF from this neighbor";
                            }  // container receive
    
                            container send {
                              must
                                "not(../receive or ../both or ../none)";
                              presence
                                "Indicates a send node is configured.";
                              description
                                "Capability to SEND the ORF to this neighbor";
                            }  // container send
    
                            container both {
                              must
                                "not(../receive or ../send or ../none)";
                              presence
                                "Indicates a both node is configured.";
                              description
                                "Capability to RECEIVE and SEND the ORF from/to this neighbor";
                            }  // container both
    
                            container none {
                              must
                                "not(../receive or ../send or ../both)";
                              presence
                                "Indicates a none node is configured.";
                              description
                                "No capability to RECEIVE or SEND the ORF from/to this neighbor";
                            }  // container none
                          }  // container prefix
                        }  // container orf
                      }  // container capability
    
                      container default-originate {
                        presence
                          "Indicates a default-originate node is configured.";
                        description
                          "Originate default route to this neighbor";
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "Route policy to specify criteria to originate default";
                        }
    
                        container inheritance-disable {
                          must
                            "not(../route-policy)";
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent default-originate being inherited from a parent group";
                        }  // container inheritance-disable
                      }  // container default-originate
    
                      container maximum-prefix {
                        presence
                          "Indicates a maximum-prefix node is configured.";
                        description
                          "Maximum number of prefixes to accept from this peer";
                        leaf prefix-limit {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          mandatory true;
                          description
                            "Maximum number of prefixes to accept from this peer";
                        }
    
                        leaf threshold {
                          type uint32 {
                            range "1..100";
                          }
                          mandatory true;
                          description
                            "Threshold value (%) at which to generate a warning msg";
                        }
    
                        container warning-only {
                          presence
                            "Indicates a warning-only node is configured.";
                          description
                            "Only give warning message when limit is exceeded";
                        }  // container warning-only
    
                        leaf restart {
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "Restart time interval";
                        }
    
                        container discard-extra-paths {
                          presence
                            "Indicates a discard-extra-paths node is configured.";
                          description
                            "Discard extra paths when limit is exceeded";
                        }  // container discard-extra-paths
                      }  // container maximum-prefix
    
                      leaf optimal-route-reflection {
                        type string {
                          length "1..32";
                        }
                        description
                          "Configure optiomal-route-reflection for this neighbor";
                      }
    
                      container next-hop-self {
                        presence
                          "Indicates a next-hop-self node is configured.";
                        description
                          "Disable the next hop calculation for this neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent next-hop-self from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container next-hop-self
    
                      container next-hop-unchanged {
                        presence
                          "Indicates a next-hop-unchanged node is configured.";
                        description
                          "Do not overwrite next hop before advertising to eBGP peers";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent next-hop-unchanged from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container next-hop-unchanged
    
                      container next-hop-unchanged-multipath {
                        presence
                          "Indicates a next-hop-unchanged-multipath node is configured.";
                        description
                          "Do not overwrite nexthop before advertising multipaths";
                      }  // container next-hop-unchanged-multipath
    
                      container slow-peer {
                        description
                          "configuration commands for slow-peer";
                        container detection {
                          description
                            "Enable or disable slow peer detection.";
                          container enable {
                            must
                              "not(../disable) and
    (../split-update-group/static or
     ../split-update-group/dynamic)";
                            presence
                              "Indicates a enable node is configured.";
                            description
                              "Enable slow peer detection";
                          }  // container enable
    
                          container disable {
                            must
                              "not(../enable) and
    (../split-update-group/static or
     ../split-update-group/dynamic)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable slow peer detection";
                          }  // container disable
    
                          container split-update-group {
                            description
                              "Options to split update group";
                            container static {
                              must
                                "not(../dynamic) and (../../enable or ../../disable)";
                              presence
                                "Indicates a static node is configured.";
                              description
                                "Manually move this peer to slow update group";
                            }  // container static
    
                            container dynamic {
                              must
                                "not(../static) and (../../enable or ../../disable)";
                              presence
                                "Indicates a dynamic node is configured.";
                              description
                                "Move peer to slow update group on detection";
                              container permanent {
                                must
                                  "not(../disable)";
                                presence
                                  "Indicates a permanent node is configured.";
                                description
                                  "Do not revert back peer on recovery";
                              }  // container permanent
    
                              container disable {
                                must
                                  "not(../permanent)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable moving slow peer to updgrp";
                              }  // container disable
                            }  // container dynamic
                          }  // container split-update-group
                        }  // container detection
                      }  // container slow-peer
    
                      container origin-as {
                        description
                          "BGP origin-AS knobs";
                        container validation {
                          description
                            "BGP origin-AS validation knobs";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable RPKI origin-AS validation";
                          }  // container disable
                        }  // container validation
                      }  // container origin-as
    
                      container bestpath {
                        description
                          "Change default route selection criteria";
                        container origin-as {
                          description
                            "BGP origin-AS knobs";
                          container allow {
                            description
                              "BGP origin-AS knobs";
                            container invalid {
                              presence
                                "Indicates a invalid node is configured.";
                              description
                                "BGP bestpath selection will allow 'invalid' origin-AS";
                            }  // container invalid
                          }  // container allow
                        }  // container origin-as
                      }  // container bestpath
    
                      container route-policy {
                        description
                          "Apply route policy";
                        leaf in {
                          type xr:Route-policy-name;
                          description
                            "Apply route policy to inbound routes";
                        }
    
                        leaf out {
                          type xr:Route-policy-name;
                          description
                            "Apply route policy to outbound routes";
                        }
                      }  // container route-policy
    
                      container orf {
                        description
                          "Specify ORF and inbound filtering criteria";
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "Route policy to specify ORF and inbound filter";
                        }
                      }  // container orf
    
                      container remove-private-as {
                        presence
                          "Indicates a entire-aspath node is configured.";
                        description
                          "Remove private AS number from outbound updates";
                        container entire-aspath {
                          must
                            "not(../inheritance-disable or ../internal)";
                          presence
                            "Indicates a entire-aspath node is configured.";
                          description
                            "remove only if all ASes in the path are private";
                        }  // container entire-aspath
    
                        container inheritance-disable {
                          must
                            "not(../entire-aspath or ../internal)";
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent remove-private-AS from being inherited from the parent";
                        }  // container inheritance-disable
    
                        container internal {
                          must
                            "not(../entire-aspath or ../inheritance-disable)";
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "remove only if all ASes in the path are private";
                          container inheritance-disable {
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent remove-private-AS from being inherited from the parent";
                          }  // container inheritance-disable
                        }  // container internal
                      }  // container remove-private-as
    
                      container remove-private-as-inbound {
                        must
                          "not(entire-aspath and inheritance-disable)";
                        presence
                          "Indicates a remove-private-as-inbound node is configured.";
                        description
                          "Remove private AS number from inbound updates";
                        container entire-aspath {
                          presence
                            "Indicates a entire-aspath node is configured.";
                          description
                            "remove only if all ASes in the path are private";
                        }  // container entire-aspath
    
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent remove-private-AS from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container remove-private-as-inbound
    
                      container enforce-multiple-labels {
                        presence
                          "Indicates a enforce-multiple-labels node is configured.";
                        description
                          "Enforce support for multiple labels (requires manual session flap)";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent enforce-multiple-labels from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container enforce-multiple-labels
    
                      container route-reflector-client {
                        presence
                          "Indicates a route-reflector-client node is configured.";
                        description
                          "Configure a neighbor as Route Reflector client";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent route-reflector-client from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container route-reflector-client
    
                      container accept-route-legacy-rt {
                        presence
                          "Indicates a accept-route-legacy-rt node is configured.";
                        description
                          "Configure a neighbor to support legacy PE for RT-Constraint AF";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent  accept-route-legacy-RT from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container accept-route-legacy-rt
    
                      container send-community-ebgp {
                        presence
                          "Indicates a send-community-ebgp node is configured.";
                        description
                          "Send community attribute to this external neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent send-community-ebgp from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container send-community-ebgp
    
                      container send-community-gshut-ebgp {
                        presence
                          "Indicates a send-community-gshut-ebgp node is configured.";
                        description
                          "Allow the g-shut community to be sent to this external neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent send-community-gshut-ebgp from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container send-community-gshut-ebgp
    
                      container send-extended-community-ebgp {
                        presence
                          "Indicates a send-extended-community-ebgp node is configured.";
                        description
                          "Send extended community attribute to this external neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent send-extended-community-ebgp from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container send-extended-community-ebgp
    
                      container soft-reconfiguration {
                        description
                          "Per neighbor soft reconfiguration";
                        container inbound {
                          presence
                            "Indicates a inbound node is configured.";
                          description
                            "Allow inbound soft reconfiguration for this neighbor";
                          container rpki-dropped-only {
                            must
                              "not(../rpki-tested-only or ../always or ../inheritance-disable)";
                            presence
                              "Indicates a rpki-dropped-only node is configured.";
                            description
                              "Use soft-reconfig, for paths dropped by route-policy which have RPKI validity state check";
                          }  // container rpki-dropped-only
    
                          container rpki-tested-only {
                            must
                              "not(../rpki-dropped-only or ../always or ../inheritance-disable)";
                            presence
                              "Indicates a rpki-tested-only node is configured.";
                            description
                              "Use soft-reconfig for paths tested or dropped by route-policy which have RPKI validity state check";
                          }  // container rpki-tested-only
    
                          container always {
                            must
                              "not(../rpki-dropped-only or ../rpki-tested-only or ../inheritance-disable)";
                            presence
                              "Indicates a always node is configured.";
                            description
                              "Always use soft reconfig, even if route refresh is supported";
                          }  // container always
    
                          container inheritance-disable {
                            must
                              "not(../rpki-dropped-only or ../rpki-tested-only or ../always)";
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent soft-reconfiguration from being inherited from the parent";
                          }  // container inheritance-disable
                        }  // container inbound
                      }  // container soft-reconfiguration
    
                      container update {
                        description
                          "BGP out bound message";
                        container out {
                          description
                            "BGP out bound message handling";
                          container originator-loopcheck {
                            presence
                              "Indicates a originator-loopcheck node is configured.";
                            description
                              "Loop check for same originator which sent the route";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable originator loop check";
                            }  // container disable
                          }  // container originator-loopcheck
                        }  // container out
                      }  // container update
    
                      container advertise {
                        description
                          "Per neighbor advertisement options";
                        container permanent-network {
                          when
                            "../../af-name != 'vpnv4-unicast' and
    ../../af-name != 'vpnv4-multicast' and
    ../../af-name != 'vpnv4-flowspec' and
    ../../af-name != 'vpnv6-flowspec' and
    ../../af-name != 'vpnv6-multicast' and
    ../../af-name != 'vpnv6-unicast' and
    ../../af-name != 'l2vpn-evpn' and
    ../../af-name != 'l2vpn-mspw' and
    ../../af-name != 'l2vpn-vpls-vpws'";
                          presence
                            "Indicates a permanent-network node is configured.";
                          description
                            "Allow permanent networks for this neighbor";
                        }  // container permanent-network
    
                        container local-labeled-route {
                          when
                            "../../af-name != 'vpnv4-unicast' and
    ../../af-name != 'vpnv4-multicast' and
    ../../af-name != 'vpnv4-flowspec' and
    ../../af-name != 'vpnv6-flowspec' and
    ../../af-name != 'vpnv6-multicast' and
    ../../af-name != 'vpnv6-unicast' and
    ../../af-name != 'l2vpn-evpn' and
    ../../af-name != 'l2vpn-mspw' and
    ../../af-name != 'l2vpn-vpls-vpws'";
                          presence
                            "Indicates a local-labeled-route node is configured.";
                          description
                            "Advertisement of routes with local-label";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Do not advertise routes with local-label via Unicast SAFI";
                          }  // container disable
                        }  // container local-labeled-route
    
                        container vpnv4 {
                          when
                            "../../af-name = 'vpnv4-unicast' or
    ../../af-name = 'vpnv6-unicast' or
    ../../af-name = 'l2vpn-evpn'";
                          description
                            "VPNv4 Address Family";
                          container unicast {
                            description
                              "Address Family modifier";
                            container enable {
                              presence
                                "Indicates an enable node is configured.";
                              description
                                "Enable advertise vpnv4 unicast";
                              container re-originated {
                                presence
                                  "Indicates a re-originated node is configured.";
                                description
                                  "Advertise re-orignated and local routes only";
                                container stitching-rt {
                                  presence
                                    "Indicates a stitching-rt node is configured.";
                                  description
                                    "Advertise re-originated and local routes with stitching Route-Targets";
                                }  // container stitching-rt
                              }  // container re-originated
                            }  // container enable
    
                            container imported-from-default-vrf {
                              description
                                "Default VRF imported routes";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable advertisement of default VRF imported routes";
                              }  // container disable
                            }  // container imported-from-default-vrf
    
                            container imported-from-vrf {
                              description
                                "VRF extranet imported routes";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable advertisement of VRF extranet imported routes";
                              }  // container disable
                            }  // container imported-from-vrf
    
                            container imported-from-bridgedomain {
                              description
                                "VRF EVPN extranet imported routes ";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable advertisement of VRF EVPN extranet imported routes";
                              }  // container disable
                            }  // container imported-from-bridgedomain
                          }  // container unicast
                        }  // container vpnv4
    
                        container vpnv6 {
                          when
                            "../../af-name = 'vpnv4-unicast' or
    ../../af-name = 'vpnv6-unicast' or
    ../../af-name = 'l2vpn-evpn'";
                          description
                            "VPNv6 Address Family";
                          container unicast {
                            description
                              "Address Family modifier";
                            container enable {
                              presence
                                "Indicates an enable node is configured.";
                              description
                                "Enable advertise vpnv6 unicast";
                              container re-originated {
                                presence
                                  "Indicates a re-originated node is configured.";
                                description
                                  "Advertise Re-orignated routes only";
                                container stitching-rt {
                                  presence
                                    "Indicates a stitching-rt node is configured.";
                                  description
                                    "Advertise re-originated routes with stitching Route-Targets";
                                }  // container stitching-rt
                              }  // container re-originated
                            }  // container enable
    
                            container imported-from-default-vrf {
                              description
                                "Default VRF imported routes";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable advertisement of default VRF imported routes";
                              }  // container disable
                            }  // container imported-from-default-vrf
    
                            container imported-from-vrf {
                              description
                                "VRF extranet imported routes";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable advertisement of VRF extranet imported routes";
                              }  // container disable
                            }  // container imported-from-vrf
    
                            container imported-from-bridgedomain {
                              description
                                "VRF EVPN extranet imported routes";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable advertisement of VRF EVPN extranet imported routes";
                              }  // container disable
                            }  // container imported-from-bridgedomain
                          }  // container unicast
                        }  // container vpnv6
    
                        container l2vpn {
                          when
                            "../../af-name = 'vpnv4-unicast' or
    ../../af-name = 'vpnv6-unicast' or
    ../../af-name = 'l2vpn-evpn'";
                          description
                            "L2VPN Address Family";
                          container evpn {
                            when
                              "../../../af-name = 'l2vpn-evpn'";
                            presence
                              "Indicates a evpn node is configured.";
                            description
                              "Address Family modifier";
                            container re-originated {
                              presence
                                "Indicates a re-originated node is configured.";
                              description
                                "Advertise Re-orignated routes only";
                              container stitching-rt {
                                presence
                                  "Indicates a stitching-rt node is configured.";
                                description
                                  "Advertise re-originated routes with stitching Route-Targets";
                              }  // container stitching-rt
                            }  // container re-originated
                          }  // container evpn
    
                          container evpn-disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable Advertisement of selected SAFI";
                          }  // container evpn-disable
    
                          container vpls-vpws {
                            description
                              "Address Family modifier";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable Advertisement of selected SAFI";
                            }  // container disable
                          }  // container vpls-vpws
    
                          container mspw {
                            description
                              "Address Family modifier";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable Advertisement of selected SAFI";
                            }  // container disable
                          }  // container mspw
                        }  // container l2vpn
                      }  // container advertise
    
                      container encapsulation-type {
                        when
                          "../af-name = 'ipv4-unicast' or
    ../af-name = 'ipv6-unicast' or
    ../af-name = 'vpnv4-unicast' or
    ../af-name = 'vpnv6-unicast' or
    ../af-name = 'l2vpn-evpn'";
                        description
                          "Specify encapsulation type";
                        container vxlan {
                          when
                            "../../af-name = 'vpnv4-unicast' or
    ../../af-name = 'vpnv6-unicast' or
    ../../af-name = 'l2vpn-evpn'";
                          must "not(../srv6)";
                          presence
                            "Indicates a vxlan node is configured.";
                          description
                            "VxLAN encapsulation";
                        }  // container vxlan
    
                        container srv6 {
                          when
                            "../../af-name != 'l2vpn-evpn'";
                          must "not(../vxlan)";
                          presence
                            "Indicates a srv6 node is configured.";
                          description
                            "SRv6 encapsulation";
                        }  // container srv6
                      }  // container encapsulation-type
    
                      container segment-routing {
                        when
                          "../af-name = 'vpnv4-unicast'";
                        description
                          "enable segment-routing srv6 version 4";
                        container srv6 {
                          description
                            "srv6 version 4";
                          container prefix-sid-type4 {
                            presence
                              "Indicates a prefix-sid-type4 node is configured.";
                            description
                              "Enable prefix sid version 4 encoding";
                          }  // container prefix-sid-type4
                        }  // container srv6
                      }  // container segment-routing
    
                      container import {
                        when
                          "../af-name = 'vpnv4-unicast' or ../af-name = 'vpnv6-unicast'  or ../af-name = 'l2vpn-evpn'";
                        description
                          "Import options for neighbor address-family routes";
                        container stitching-rt {
                          presence
                            "Indicates a stitching-rt node is configured.";
                          description
                            "Import routes using stitching RTs";
                          container re-originate {
                            presence
                              "Indicates a re-originate node is configured.";
                            description
                              "Re-originate imported routes";
                            container stitching-rt {
                              presence
                                "Indicates a stitching-rt node is configured.";
                              description
                                "Reoriginate imported routes by attaching stitching RTs";
                            }  // container stitching-rt
                          }  // container re-originate
                        }  // container stitching-rt
                      }  // container import
    
                      leaf weight {
                        type uint32 {
                          range "0..65535";
                        }
                        description
                          "Set default weight for routes from this neighbor";
                      }
    
                      container allowas-in {
                        presence
                          "Indicates a allowas-in node is configured.";
                        description
                          "Allow as-path with my AS present in it";
                        leaf number-of-occurences {
                          type uint32 {
                            range "1..10";
                          }
                          description
                            "Number of occurences of AS number";
                        }
                      }  // container allowas-in
    
                      container long-lived-graceful-restart {
                        description
                          "Enable long lived graceful restart support";
                        container stale-time {
                          description
                            "Maximum time to wait before purging long-lived stale routes";
                          leaf send {
                            type uint32 {
                              range
                                "0..16777215";
                            }
                            description
                              "Stale-time sent in LLGR Capability";
                          }
    
                          leaf accept {
                            type uint32 {
                              range
                                "0..16777215";
                            }
                            description
                              "Maximum stale-time acceptable from neighbor";
                          }
                        }  // container stale-time
    
                        container capable {
                          presence
                            "Indicates a capable node is configured.";
                          description
                            "Treat neighbor as LLGR capable";
                        }  // container capable
                      }  // container long-lived-graceful-restart
    
                      container as-override {
                        presence
                          "Indicates a as-override node is configured.";
                        description
                          "Override matching AS-number while sending update";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent as-override from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container as-override
    
                      container aigp {
                        presence
                          "Indicates a aigp node is configured.";
                        description
                          "Enable AIGP for this neighbor ";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable AIGP";
                        }  // container disable
                      }  // container aigp
    
                      container aigp-send {
                        description "Copy AIGP";
                        container cost-community {
                          must
                            "(cost-community-id and poi) or disable";
                          presence
                            "Indicates a cost-community node is configured.";
                          description
                            "Send AIGP value in Cost Community";
                          leaf cost-community-id {
                            type uint32 {
                              range "0..255";
                            }
                            must
                              "not(../disable)";
                            description
                              "Cost community ID";
                          }
    
                          container poi {
                            must
                              "(igp-cost or pre-bestpath) and not(igp-cost and pre-bestpath)";
                            presence
                              "Indicates a poi node is configured.";
                            description
                              "Point of insertion for bestpath calculation";
                            container igp-cost {
                              presence
                                "Indicates a igp-cost node is configured.";
                              description
                                "Cost community is used after IGP distance to next hop";
                              container transitive {
                                presence
                                  "Indicates a transitive node is configured.";
                                description
                                  "Enable transitive cost community";
                              }  // container transitive
                            }  // container igp-cost
    
                            container pre-bestpath {
                              presence
                                "Indicates a pre-bestpath node is configured.";
                              description
                                "Cost community is first step in best path calculation";
                              container transitive {
                                presence
                                  "Indicates a transitive node is configured.";
                                description
                                  "Enable transitive cost community";
                              }  // container transitive
                            }  // container pre-bestpath
                          }  // container poi
    
                          container disable {
                            must
                              "not(../cost-community-id)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable aigp send cost-community";
                          }  // container disable
                        }  // container cost-community
    
                        container med {
                          presence
                            "Indicates a med node is configured.";
                          description
                            "Send AIGP value in MED";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable aigp send med";
                          }  // container disable
                        }  // container med
                      }  // container aigp-send
    
                      container validation {
                        when
                          "../af-name = 'ipv4-flowspec' or ../af-name = 'ipv6-flowspec'";
                        presence
                          "Indicates a validation node is configured.";
                        description
                          "Flowspec Validation for this neighbor ";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable Flowspec Validation";
                        }  // container disable
    
                        container redirect {
                          description
                            "Flowspec Redirect nexthop Validation";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable Flowspec Redirect nexthop Validation";
                          }  // container disable
                        }  // container redirect
                      }  // container validation
    
                      container send-multicast-attributes {
                        when
                          "../af-name = 'ipv4-unicast' or ../af-name = 'ipv6-unicast' or ../af-name = 'ipv4-labeled-unicast' or ../af-name = 'ipv6-labeled-unicast' or ../af-name = 'ipv4-multicast' or ../af-name = 'ipv6-multicast' or ../af-name = 'ipv4-mvpn' or ../af-name = 'ipv6-mvpn'";
                        presence
                          "Indicates a send-multicast-attributes node is configured.";
                        description
                          "Send multicast attributes to this neighbor ";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable send multicast attribute";
                        }  // container disable
                      }  // container send-multicast-attributes
    
                      container signalling {
                        description
                          "Signalling protocols to disable, BGP or LDP";
                        container bgp {
                          description
                            "Select BGP to disable";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable Signalling type";
                          }  // container disable
                        }  // container bgp
    
                        container ldp {
                          description
                            "Select LDP to disable";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable Signalling type";
                          }  // container disable
                        }  // container ldp
                      }  // container signalling
    
                      container accept-own {
                        presence
                          "Indicates a accept-own node is configured.";
                        description
                          "Handle self-originated routes with Accept-Own community";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent item being inherited from a parent group";
                        }  // container inheritance-disable
                      }  // container accept-own
    
                      container cluster-id {
                        description
                          "Allow routes with first cluster-id in list is same as the router's cluster id";
                        container allow-equal {
                          presence
                            "Indicates a allow-equal node is configured.";
                          description
                            "Accept routes with first cluster-id in list is same as the router's cluster id";
                          container disable {
                            presence
                              "Indicates a allow-equal node is configured.";
                            description
                              "Prevent the configuration from being inherited.";
                          }  // container disable
                        }  // container allow-equal
                      }  // container cluster-id
    
                      container multipath {
                        presence
                          "Indicates a multipath node is configured.";
                        description
                          "Paths from this neighbor is eligible for multipath";
                      }  // container multipath
                    }  // list address-family
                  }  // container address-families
    
                  container update {
                    description
                      "BGP Update configuration";
                    container in {
                      description
                        "Inbound update message handling";
                      container filtering {
                        presence
                          "Indicates a filtering node is configured.";
                        description
                          "Inbound update message filtering";
                        container message {
                          description
                            "Filtered update messages";
                          container buffers {
                            presence
                              "Indicates a buffers node is configured.";
                            description
                              "Filtered update message buffers";
                            leaf number-of-buffers {
                              type uint32 {
                                range "0..25";
                              }
                              mandatory true;
                              description
                                "Filtered update message buffers";
                            }
    
                            container non-circular {
                              presence
                                "Indicates a non-circular node is configured.";
                              description
                                "Message buffer list is not circular";
                            }  // container non-circular
                          }  // container buffers
                        }  // container message
    
                        container logging {
                          description
                            "Update filtering syslog message";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable update filtering syslog message";
                          }  // container disable
                        }  // container logging
    
                        container attribute-filter {
                          description
                            "Attribute-filter configuration";
                          leaf group {
                            type string {
                              length "1..1024";
                            }
                            description
                              "Attribute-filter group configuration";
                          }
                        }  // container attribute-filter
                      }  // container filtering
    
                      container merge {
                        description
                          "Merge incoming updates";
                        container safi {
                          description
                            "SAFI of the NLRIs to merge";
                          container unicast {
                            description
                              "IPv4/IPv6 unicast paths";
                            container labeled-unicast {
                              presence
                                "Indicates a labeled-unicast node is configured.";
                              description
                                "IPv4/IPv6 labeled-unicast paths";
                              container inheritance-disable {
                                presence
                                  "Indicates a inheritance-disable node is configured.";
                                description
                                  "Do not inherit this configuration from parent group";
                              }  // container inheritance-disable
                            }  // container labeled-unicast
                          }  // container unicast
                        }  // container safi
                      }  // container merge
                    }  // container in
                  }  // container update
    
                  container graceful-maintenance {
                    presence
                      "Indicates a graceful-maintenance node is configured.";
                    description
                      "Attributes for Graceful Maintenance. This will cause neig dprefer routes from this router and choonas. This allows the router to be brourt of service gracefully.";
                    container local-preference {
                      must
                        "local-preference-value or inheritance-disable";
                      presence
                        "Indicates a local-preference node is configured.";
                      description
                        "local preference with which to advertise routes to ibgps. Default=No Touch";
                      leaf local-preference-value {
                        type uint32 {
                          range "0..4294967295";
                        }
                        description
                          "Range of values for Local Preference";
                      }
    
                      container inheritance-disable {
                        presence
                          "Indicates a inheritance-disable node is configured.";
                        description
                          "Prevent local preference from being inherited from the parent";
                      }  // container inheritance-disable
                    }  // container local-preference
    
                    container as-prepends {
                      must
                        "number-of-as-prepends or inheritance-disable";
                      presence
                        "Indicates a as-prepends node is configured.";
                      description
                        "Number of times to prepend the local AS number to the AS pous. Default=0";
                      leaf number-of-as-prepends {
                        type uint32 {
                          range "0..6";
                        }
                        description
                          "Range of number of AS prepends";
                      }
    
                      container inheritance-disable {
                        presence
                          "Indicates a inheritance-disable node is configured.";
                        description
                          "Prevent AS prepends from being inherited from the parent";
                      }  // container inheritance-disable
                    }  // container as-prepends
    
                    container activate {
                      presence
                        "Indicates a activate node is configured.";
                      description
                        "Routes will be announced with the graceful maintenance
    attrhi activated either here or under router
    bgp atn. While activated, all routes to this
    neigl  announced with the attributes
    conferand all routes from this neighbor will
    be a tother neighbors with the graceful
    mainatibutes configured under those
    neighe-shut community will be announced
    regaf e other attributes configured here. To
    allosh community to be announced to ebgp
    neigheend-community-gshut-ebgp configuration
    is air. Note: changes to the attributes will
    not ecwhile activated.";
                      container inheritance-disable {
                        presence
                          "Indicates a inheritance-disable node is configured.";
                        description
                          "Prevent activate from being inherited from the parent";
                      }  // container inheritance-disable
                    }  // container activate
                  }  // container graceful-maintenance
    
                  leaf remote-as {
                    type xr:Bgp-as-number;
                    description "bgp as-number";
                  }
    
                  leaf remote-as-list {
                    type string {
                      length "1..1024";
                    }
                    description
                      "Remote as-list configuration";
                  }
    
                  container use {
                    description
                      "Inherit configuration from a group";
                    leaf session-group {
                      type string {
                        length "1..1024";
                      }
                      description
                        "Inherit address-family independent config from a session-group";
                    }
    
                    leaf neighbor-group {
                      type string {
                        length "1..1024";
                      }
                      description
                        "Inherit configuration from a neighbor-group";
                    }
                  }  // container use
    
                  container advertisement-interval {
                    presence
                      "Indicates a advertisement-interval node is configured.";
                    description
                      "Minimum interval between sending BGP routing updates";
                    leaf time-in-seconds {
                      type uint32 {
                        range "0..600";
                      }
                      mandatory true;
                      description
                        "Minimum interval between sending BGP routing updates";
                    }
    
                    leaf time-in-milliseconds {
                      type uint32 {
                        range "0..999";
                      }
                      description
                        "time in milliseconds";
                    }
                  }  // container advertisement-interval
    
                  leaf description {
                    type string {
                      length "1..1024";
                    }
                    description
                      "Neighbor specific description";
                  }
    
                  container ignore-connected-check {
                    presence
                      "Indicates a ignore-connected-check node is configured.";
                    description
                      "Bypass the directly connected nexthop check for single-hop eBGP peering";
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent ignore-connected-check from being inherited from the parent";
                    }  // container inheritance-disable
                  }  // container ignore-connected-check
    
                  container ebgp-multihop {
                    presence
                      "Indicates a ebgp-multihop node is configured.";
                    description
                      "Allow EBGP neighbors not on directly connected networks";
                    leaf maximum-hop-count {
                      type uint32 {
                        range "1..255";
                      }
                      mandatory true;
                      description
                        "maximum hop count";
                    }
    
                    container mpls {
                      presence
                        "Indicates a mpls node is configured.";
                      description
                        "Disable BGP MPLS forwarding";
                    }  // container mpls
                  }  // container ebgp-multihop
    
                  container tcp {
                    description
                      "TCP session configuration commands";
                    container mss {
                      must
                        "initial-mss or inheritance-disable";
                      presence
                        "Indicates a mss node is configured.";
                      description
                        "Maximum Segment Size";
                      leaf initial-mss {
                        type uint32 {
                          range "68..10000";
                        }
                        description
                          "TCP initial maximum segment size";
                      }
    
                      container inheritance-disable {
                        presence
                          "Indicates a inheritance-disable node is configured.";
                        description
                          "Prevent tcp mss from being inherited from the parent";
                      }  // container inheritance-disable
                    }  // container mss
                  }  // container tcp
    
                  container bmp-activate {
                    description
                      "Enable BMP logging for this neighbor";
                    container servers {
                      description
                        "Enable BMP connection to particular server";
                      list server {
                        key "server-id";
                        description
                          "Enable BMP connection to particular server";
                        leaf server-id {
                          type uint32 {
                            range "1..8";
                          }
                          description
                            "Enable BMP connection to particular server";
                        }
                      }  // list server
                    }  // container servers
                  }  // container bmp-activate
    
                  container bfd {
                    description
                      "Configure BFD parameters";
                    container fast-detect {
                      must
                        "not(strict-mode and inheritance-disable)";
                      presence
                        "Indicates a fast-detect node is configured.";
                      description
                        "Enable Fast detection";
                      container strict-mode {
                        presence
                          "Indicates a strict-mode node is configured.";
                        description
                          "Hold down neighbor session until BFD session is up";
                      }  // container strict-mode
    
                      container inheritance-disable {
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Prevent bfd settings from being inherited from the parent";
                      }  // container inheritance-disable
                    }  // container fast-detect
    
                    leaf minimum-interval {
                      type uint32 {
                        range "3..30000";
                      }
                      description
                        "Hello interval";
                    }
    
                    leaf multiplier {
                      type uint32 {
                        range "2..16";
                      }
                      description
                        "Detect multiplier";
                    }
                  }  // container bfd
    
                  container keychain {
                    must
                      "name or inheritance-disable";
                    presence
                      "Indicates a keychain node is configured.";
                    description
                      "Set keychain based authentication";
                    leaf name {
                      type string {
                        length "1..32";
                      }
                      description
                        "Name of the key chain - maximum 32 characters";
                    }
    
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent keychain from being inherited from parent";
                    }  // container inheritance-disable
                  }  // container keychain
    
                  container local-as {
                    must
                      "as-number or inheritance-disable";
                    presence
                      "Indicates a local-as node is configured.";
                    description
                      "Specify local AS number";
                    leaf as-number {
                      type xr:Bgp-as-number;
                      description
                        "bgp as-number";
                    }
    
                    container no-prepend {
                      presence
                        "Indicates a no-prepend node is configured.";
                      description
                        "Do not prepend local AS to announcements from this neighbor";
                      container replace-as {
                        presence
                          "Indicates a replace-as node is configured.";
                        description
                          "Prepend only local AS to announcements to this neighbor";
                        container dual-as {
                          presence
                            "Indicates a dual-as node is configured.";
                          description
                            "Dual-AS mode";
                        }  // container dual-as
                      }  // container replace-as
                    }  // container no-prepend
    
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent local AS from being inherited from parent";
                    }  // container inheritance-disable
                  }  // container local-as
    
                  container password {
                    must
                      "encrypted or inheritance-disable";
                    presence
                      "Indicates a password node is configured.";
                    description "Set a password";
                    leaf encrypted {
                      type xr:Proprietary-password;
                      description
                        "Specifies an ENCRYPTED password will follow";
                    }
    
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent password from being inherited from parent";
                    }  // container inheritance-disable
                  }  // container password
    
                  container receive-buffer-size {
                    presence
                      "Indicates a receive-buffer-size node is configured.";
                    description
                      "Set socket and BGP receive buffer size";
                    leaf receive-socket-buffer-size {
                      type uint32 {
                        range "512..131072";
                      }
                      mandatory true;
                      description
                        "Set socket and BGP receive buffer size";
                    }
    
                    leaf bgp-read-buffer-size {
                      type uint32 {
                        range "512..131072";
                      }
                      description
                        "BGP Read buffer size in bytes";
                    }
                  }  // container receive-buffer-size
    
                  container send-buffer-size {
                    presence
                      "Indicates a send-buffer-size node is configured.";
                    description
                      "Set socket and BGP send buffer size";
                    leaf send-socket-buffer-size {
                      type uint32 {
                        range "4096..131072";
                      }
                      mandatory true;
                      description
                        "Set socket and BGP send buffer size";
                    }
    
                    leaf bgp-write-buffer-size {
                      type uint32 {
                        range "4096..131072";
                      }
                      description
                        "BGP Write buffer size in bytes";
                    }
                  }  // container send-buffer-size
    
                  container shutdown {
                    presence
                      "Indicates a shutdown node is configured.";
                    description
                      "Administratively shut down this neighbor";
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent this neighbor being shutdown, even if its parent is";
                    }  // container inheritance-disable
                  }  // container shutdown
    
                  container timers {
                    presence
                      "Indicates a timers node is configured.";
                    description
                      "BGP per neighbor timers";
                    leaf keepalive-interval {
                      type uint32 {
                        range "0..65535";
                      }
                      mandatory true;
                      description "BGP timers";
                    }
    
                    leaf holdtime {
                      type union {
                        type uint32 {
                          range "0";
                        }
                        type uint32 {
                          range "3..65535";
                        }
                      }
                      mandatory true;
                      description
                        "Holdtime. Set 0 to disable keepalives/hold time.";
                    }
    
                    leaf minimum-acceptable-holdtime {
                      type union {
                        type uint32 {
                          range "0";
                        }
                        type uint32 {
                          range "3..65535";
                        }
                      }
                      description
                        "Minimum acceptable holdtime from neighbor. Set 0 to disable keepalives/hold time.";
                    }
                  }  // container timers
    
                  container local {
                    description
                      "Configure local parameter";
                    container address {
                      must
                        "ip-address or inheritance-disable";
                      presence
                        "Indicates a address node is configured.";
                      description
                        "use configured local address for bgp peering";
                      leaf ip-address {
                        type inet:ip-address-no-zone;
                        description
                          "IPv4 address";
                      }
    
                      container inheritance-disable {
                        presence
                          "Indicates a inheritance-disable node is configured.";
                        description
                          "Prevent local address from being inherited from parent";
                      }  // container inheritance-disable
                    }  // container address
                  }  // container local
    
                  container log {
                    description
                      "Logging update messages per neighbor";
                    container message {
                      description
                        "Logging update/notification messages per neighbor";
                      container in {
                        description
                          "Inbound log messages";
                        leaf message-log-buffer-size {
                          type uint32 {
                            range "1..500";
                          }
                          description
                            "Range for message log buffer size";
                        }
    
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable inbound message logging";
                        }  // container disable
    
                        container inheritance-diable {
                          presence
                            "Indicates a inheritance-diable node is configured.";
                          description
                            "Prevents the msg log from being inherited from the parent";
                        }  // container inheritance-diable
                      }  // container in
    
                      container out {
                        description
                          "Outbound log messages";
                        leaf message-log-buffer-size {
                          type uint32 {
                            range "1..500";
                          }
                          description
                            "Range for message log buffer size";
                        }
    
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable outbound message logging";
                        }  // container disable
    
                        container inheritance-diable {
                          presence
                            "Indicates a inheritance-diable node is configured.";
                          description
                            "Prevents the msg log from being inherited from the parent";
                        }  // container inheritance-diable
                      }  // container out
                    }  // container message
                  }  // container log
    
                  leaf update-source {
                    type xr:Interface-name;
                    description
                      "Source of routing updates";
                  }
    
                  container local-address-subnet {
                    description
                      "Local address subnet of routing updates";
                    leaf ip-address {
                      type inet:ip-address-no-zone;
                      description
                        "IP address and mask length";
                    }
    
                    leaf mask-length {
                      type uint32 {
                        range "0..128";
                      }
                      description
                        "IP address and mask length";
                    }
                  }  // container local-address-subnet
    
                  container dmz-link-bandwidth {
                    presence
                      "Indicates a dmz-link-bandwidth node is configured.";
                    description
                      "Propagate the DMZ link bandwidth";
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent dmz-link-bandwidth from being inherited from the parent";
                    }  // container inheritance-disable
                  }  // container dmz-link-bandwidth
    
                  container ebgp-recv-extcommunity-dmz {
                    presence
                      "Indicates a ebgp-recv-extcommunity-dmz node is configured.";
                    description
                      "Receive extcommunity dmz link bandwidth from ebgp neighbor";
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent ebgp-send-community-dmz from being inherited from parent";
                    }  // container inheritance-disable
                  }  // container ebgp-recv-extcommunity-dmz
    
                  container ebgp-send-extcommunity-dmz {
                    must
                      "not(cumulative and inheritance-disable)";
                    presence
                      "Indicates a ebgp-send-extcommunity-dmz node is configured.";
                    description
                      "Send extended community dmz link bandwidth to ebgp neighbor";
                    container cumulative {
                      presence
                        "Indicates a cumulative node is configured.";
                      description
                        "Send cumulative community dmz link bandwidth of all multipaths to ebgp neighbor";
                    }  // container cumulative
    
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent ebgp-send-extcommunity-dmz from being inherited from parent";
                    }  // container inheritance-disable
                  }  // container ebgp-send-extcommunity-dmz
    
                  container ttl-security {
                    presence
                      "Indicates a ttl-security node is configured.";
                    description
                      "Enable EBGP TTL security";
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent ttl-security from being inherited from the parent";
                    }  // container inheritance-disable
                  }  // container ttl-security
    
                  container session-open-mode {
                    description
                      "Establish BGP session using this TCP open mode";
                    container active-only {
                      must
                        "not(../passive-only or ../both)";
                      presence
                        "Indicates a active-only node is configured.";
                      description "Active only";
                    }  // container active-only
    
                    container passive-only {
                      must
                        "not(../active-only or ../both)";
                      presence
                        "Indicates a passive-only node is configured.";
                      description "Passive only";
                    }  // container passive-only
    
                    container both {
                      must
                        "not(../active-only or ../passive-only)";
                      presence
                        "Indicates a both node is configured.";
                      description
                        "Prevent session-open-mode being inherited from the parent";
                    }  // container both
                  }  // container session-open-mode
    
                  leaf dscp {
                    type enumeration {
                      enum "default" {
                        value 0;
                        description
                          "Set packets with default dscp (000000)";
                      }
                      enum "cs1" {
                        value 8;
                        description
                          "Set packets with CS1(precedence 1) dscp (001000)";
                      }
                      enum "af11" {
                        value 10;
                        description
                          "Set packets with AF11 dscp (001010)";
                      }
                      enum "af12" {
                        value 12;
                        description
                          "Set packets with AF12 dscp (001100)";
                      }
                      enum "af13" {
                        value 14;
                        description
                          "Set packets with AF13 dscp (001110)";
                      }
                      enum "cs2" {
                        value 16;
                        description
                          "Set packets with CS2(precedence 2) dscp (010000)";
                      }
                      enum "af21" {
                        value 18;
                        description
                          "Set packets with AF21 dscp (010010)";
                      }
                      enum "af22" {
                        value 20;
                        description
                          "Set packets with AF22 dscp (010100)";
                      }
                      enum "af23" {
                        value 22;
                        description
                          "Set packets with AF23 dscp (010110)";
                      }
                      enum "cs3" {
                        value 24;
                        description
                          "Set packets with CS3(precedence 3) dscp (011000)";
                      }
                      enum "af31" {
                        value 26;
                        description
                          "Set packets with AF31 dscp (011010)";
                      }
                      enum "af32" {
                        value 28;
                        description
                          "Set packets with AF32 dscp (011100)";
                      }
                      enum "af33" {
                        value 30;
                        description
                          "Set packets with AF33 dscp (011110)";
                      }
                      enum "cs4" {
                        value 32;
                        description
                          "Set packets with CS4(precedence 4) dscp (100000)";
                      }
                      enum "af41" {
                        value 34;
                        description
                          "Set packets with AF41 dscp (100010)";
                      }
                      enum "af42" {
                        value 36;
                        description
                          "Set packets with AF42 dscp (100100)";
                      }
                      enum "af43" {
                        value 38;
                        description
                          "Set packets with AF43 dscp (100110)";
                      }
                      enum "cs5" {
                        value 40;
                        description
                          "Set packets with CS5(precedence 5) dscp (101000)";
                      }
                      enum "ef" {
                        value 46;
                        description
                          "Set packets with EF dscp (101110)";
                      }
                      enum "cs6" {
                        value 48;
                        description
                          "Set packets with CS6(precedence 6) dscp (110000)";
                      }
                      enum "cs7" {
                        value 56;
                        description
                          "Set packets with CS7(precedence 7) dscp (111000)";
                      }
                    }
                    description
                      "Set IP DSCP (DiffServ CodePoint)";
                  }
    
                  leaf precedence {
                    type enumeration {
                      enum "routine" {
                        value 0;
                        description
                          "Set packets with routine precedence (0)";
                      }
                      enum "priority" {
                        value 1;
                        description
                          "Set packets with priority precedence (1)";
                      }
                      enum "immediate" {
                        value 2;
                        description
                          "Set packets with immediate precedence (2)";
                      }
                      enum "flash" {
                        value 3;
                        description
                          "Set packets with flash precedence (3)";
                      }
                      enum "flash-override" {
                        value 4;
                        description
                          "Set packets with flash override precedence (4)";
                      }
                      enum "critical" {
                        value 5;
                        description
                          "Set packets with critical precedence (5)";
                      }
                      enum "internet" {
                        value 6;
                        description
                          "Set packets with internetwork control precedence (6)";
                      }
                      enum "network" {
                        value 7;
                        description
                          "Set packets with network control precedence (7)";
                      }
                    }
                    description "Set precedence";
                  }
    
                  container capability {
                    description
                      "Advertise capability to the peer";
                    container suppress {
                      description
                        "Suppress advertising capability to the peer ";
                      container four-byte-as {
                        presence
                          "Indicates a four-byte-as node is configured.";
                        description
                          "4-byte-as capability";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent capability suppress 4-type-as being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container four-byte-as
    
                      container all {
                        presence
                          "Indicates a all node is configured.";
                        description
                          "All capabilities";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Do not inherit this configuration from parent group";
                        }  // container inheritance-disable
                      }  // container all
    
                      container extended-nexthop-encoding {
                        presence
                          "Indicates a extended-nexthop-encoding node is configured.";
                        description
                          "Extended-nexthop-encoding capabilities (IETF RFC 5549)";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Do not inherit this configuration from parent group";
                        }  // container inheritance-disable
                      }  // container extended-nexthop-encoding
                    }  // container suppress
    
                    container additional-paths {
                      description
                        "Additional paths capability";
                      container send {
                        presence
                          "Indicates a send node is configured.";
                        description
                          "Additional paths Send capability";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Do not advertise additional paths Send capability";
                        }  // container disable
                      }  // container send
    
                      container receive {
                        presence
                          "Indicates a receive node is configured.";
                        description
                          "Additional paths Receive capability";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Do not advertise additional paths Receive capability";
                        }  // container disable
                      }  // container receive
                    }  // container additional-paths
                  }  // container capability
    
                  container graceful-restart {
                    presence
                      "Indicates a graceful-restart node is configured.";
                    description
                      "Enable graceful restart support for this neighbor";
                    container disable {
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Disable graceful restart support for this neighbor";
                    }  // container disable
    
                    leaf restart-time {
                      type uint32 {
                        range "1..4095";
                      }
                      description
                        "Restart time advertised to the neighbor";
                    }
    
                    leaf stalepath-time {
                      type uint32 {
                        range "1..4095";
                      }
                      description
                        "Maximum time to wait for restart of GR capable peer";
                    }
                  }  // container graceful-restart
    
                  container enforce-first-as {
                    presence
                      "Indicates a enforce-first-as node is configured.";
                    description
                      "Enforce the first AS for EBGP routes";
                    container disable {
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Do not enforce the first AS for EBGP routes";
                    }  // container disable
                  }  // container enforce-first-as
    
                  container cluster-id {
                    description
                      "Enter cluster id for this neighbor";
                    leaf route-reflector-cluster-id {
                      type uint32 {
                        range "1..4294967295";
                      }
                      description
                        "Route-Reflector Cluster-id as 32 bit quantity";
                    }
    
                    leaf ip-address {
                      type inet:ipv4-address-no-zone;
                      description
                        "Route-Reflector Cluster-id in IP address format";
                    }
                  }  // container cluster-id
    
                  leaf maximum-peers {
                    type uint32 {
                      range "1..4095";
                    }
                    description
                      "Maximum dynamic neighbors";
                  }
    
                  leaf idle-watch-time {
                    type uint32 {
                      range "30..1800";
                    }
                    description
                      "Maximum time to wait for deletion of IDLE state dynamic peer";
                  }
    
                  container egress-engineering {
                    presence
                      "Indicates a egress-engineering node is configured.";
                    description
                      "Enable egress peer engineering for this neighbor";
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Do not inherit egress-engineering from the parent";
                    }  // container inheritance-disable
                  }  // container egress-engineering
    
                  container peer-sets {
                    description
                      "Assign this neighbor to a peer-set used for egress peer engineering";
                    list peer-set {
                      key "peer-set-id";
                      description
                        "Assign this neighbor to a peer-set used for egress peer engineering";
                      leaf peer-set-id {
                        type uint32 {
                          range "1..255";
                        }
                        description
                          "Assign this neighbor to a peer-set used for egress peer engineering";
                      }
                    }  // list peer-set
                  }  // container peer-sets
    
                  container peer-node-sid {
                    description
                      "Assign this neighbor a manual SID for egress peer engineering";
                    leaf index {
                      type uint32 {
                        range "0..1033575";
                      }
                      description
                        "Segment Index value which is offset of SRLB";
                    }
                  }  // container peer-node-sid
    
                  container ao {
                    description
                      "Enable Authentiation Option";
                    leaf key-chain-name {
                      type string {
                        length "1..32";
                      }
                      must
                        "not(../inheritance-disable) and (../include-tcp-options/enable or ../include-tcp-options/disable)";
                      description
                        "Name of the key chain - maximum 32 characters";
                    }
    
                    container include-tcp-options {
                      description
                        "Include/Exclude other TCP options in the header";
                      container enable {
                        must
                          "not(../disable or ../../inheritance-disable)";
                        presence
                          "Indicates a enable node is configured.";
                        description
                          "Include other TCP options in the header";
                      }  // container enable
    
                      container disable {
                        must
                          "not(../enable or ../../inheritance-disable)";
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Exclude other TCP options in the header";
                      }  // container disable
    
                      container accept-ao-mismatch-connection {
                        must
                          "../enable or ../disable";
                        presence
                          "Indicates a accept-ao-mismatch-connection node is configured.";
                        description
                          "Accept new connection even if AO mismatched";
                      }  // container accept-ao-mismatch-connection
                    }  // container include-tcp-options
    
                    container inheritance-disable {
                      must
                        "not(../key-chain-name)";
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent keychain from being inherited from parent";
                    }  // container inheritance-disable
                  }  // container ao
    
                  container origin-as {
                    description
                      "BGP origin-AS knobs";
                    container validation {
                      description
                        "BGP origin-AS validation knobs";
                      container disable {
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable RPKI origin-AS validation";
                      }  // container disable
                    }  // container validation
                  }  // container origin-as
    
                  container bestpath {
                    description
                      "Change default route selection criteria";
                    container origin-as {
                      description
                        "BGP origin-AS knobs";
                      container allow {
                        description
                          "BGP origin-AS knobs";
                        container invalid {
                          presence
                            "Indicates a invalid node is configured.";
                          description
                            "BGP bestpath selection will allow 'invalid' origin-AS";
                        }  // container invalid
                      }  // container allow
                    }  // container origin-as
                  }  // container bestpath
                }  // list neighbor
    
                list neighbor-range {
                  key "neighbor-address prefix-length";
                  description "Neighbor address";
                  leaf neighbor-address {
                    type inet:ip-address-no-zone;
                    description
                      "Neighbor address";
                  }
    
                  leaf prefix-length {
                    type uint32 {
                      range "0..127";
                    }
                    description "Prefix length";
                  }
    
                  container address-families {
                    description
                      "Enter Address Family command mode";
                    list address-family {
                      key "af-name";
                      description
                        "Enter Address Family command mode";
                      leaf af-name {
                        type Bgp-address-family;
                        description
                          "Enter Address Family command mode";
                      }
    
                      container use {
                        description
                          "Inherit configuration for this address-family from a group";
                        leaf af-group {
                          type string {
                            length "1..1024";
                          }
                          description
                            "Inherit configuration for this address-family from an af-group";
                        }
                      }  // container use
    
                      container capability {
                        description
                          "Advertise capability to the peer";
                        container orf {
                          description
                            "Advertise ORF capability to the peer";
                          container prefix {
                            description
                              "Advertise address prefix ORF capability to this neighbor";
                            container receive {
                              must
                                "not(../send or ../both or ../none)";
                              presence
                                "Indicates a receive node is configured.";
                              description
                                "Capability to RECEIVE the ORF from this neighbor";
                            }  // container receive
    
                            container send {
                              must
                                "not(../receive or ../both or ../none)";
                              presence
                                "Indicates a send node is configured.";
                              description
                                "Capability to SEND the ORF to this neighbor";
                            }  // container send
    
                            container both {
                              must
                                "not(../receive or ../send or ../none)";
                              presence
                                "Indicates a both node is configured.";
                              description
                                "Capability to RECEIVE and SEND the ORF from/to this neighbor";
                            }  // container both
    
                            container none {
                              must
                                "not(../receive or ../send or ../both)";
                              presence
                                "Indicates a none node is configured.";
                              description
                                "No capability to RECEIVE or SEND the ORF from/to this neighbor";
                            }  // container none
                          }  // container prefix
                        }  // container orf
                      }  // container capability
    
                      container default-originate {
                        presence
                          "Indicates a default-originate node is configured.";
                        description
                          "Originate default route to this neighbor";
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "Route policy to specify criteria to originate default";
                        }
    
                        container inheritance-disable {
                          must
                            "not(../route-policy)";
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent default-originate being inherited from a parent group";
                        }  // container inheritance-disable
                      }  // container default-originate
    
                      container maximum-prefix {
                        presence
                          "Indicates a maximum-prefix node is configured.";
                        description
                          "Maximum number of prefixes to accept from this peer";
                        leaf prefix-limit {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          mandatory true;
                          description
                            "Maximum number of prefixes to accept from this peer";
                        }
    
                        leaf threshold {
                          type uint32 {
                            range "1..100";
                          }
                          mandatory true;
                          description
                            "Threshold value (%) at which to generate a warning msg";
                        }
    
                        container warning-only {
                          presence
                            "Indicates a warning-only node is configured.";
                          description
                            "Only give warning message when limit is exceeded";
                        }  // container warning-only
    
                        leaf restart {
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "Restart time interval";
                        }
    
                        container discard-extra-paths {
                          presence
                            "Indicates a discard-extra-paths node is configured.";
                          description
                            "Discard extra paths when limit is exceeded";
                        }  // container discard-extra-paths
                      }  // container maximum-prefix
    
                      leaf optimal-route-reflection {
                        type string {
                          length "1..32";
                        }
                        description
                          "Configure optiomal-route-reflection for this neighbor";
                      }
    
                      container next-hop-self {
                        presence
                          "Indicates a next-hop-self node is configured.";
                        description
                          "Disable the next hop calculation for this neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent next-hop-self from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container next-hop-self
    
                      container next-hop-unchanged {
                        presence
                          "Indicates a next-hop-unchanged node is configured.";
                        description
                          "Do not overwrite next hop before advertising to eBGP peers";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent next-hop-unchanged from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container next-hop-unchanged
    
                      container next-hop-unchanged-multipath {
                        presence
                          "Indicates a next-hop-unchanged-multipath node is configured.";
                        description
                          "Do not overwrite nexthop before advertising multipaths";
                      }  // container next-hop-unchanged-multipath
    
                      container slow-peer {
                        description
                          "configuration commands for slow-peer";
                        container detection {
                          description
                            "Enable or disable slow peer detection.";
                          container enable {
                            must
                              "not(../disable) and
    (../split-update-group/static or
     ../split-update-group/dynamic)";
                            presence
                              "Indicates a enable node is configured.";
                            description
                              "Enable slow peer detection";
                          }  // container enable
    
                          container disable {
                            must
                              "not(../enable) and
    (../split-update-group/static or
     ../split-update-group/dynamic)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable slow peer detection";
                          }  // container disable
    
                          container split-update-group {
                            description
                              "Options to split update group";
                            container static {
                              must
                                "not(../dynamic) and (../../enable or ../../disable)";
                              presence
                                "Indicates a static node is configured.";
                              description
                                "Manually move this peer to slow update group";
                            }  // container static
    
                            container dynamic {
                              must
                                "not(../static) and (../../enable or ../../disable)";
                              presence
                                "Indicates a dynamic node is configured.";
                              description
                                "Move peer to slow update group on detection";
                              container permanent {
                                must
                                  "not(../disable)";
                                presence
                                  "Indicates a permanent node is configured.";
                                description
                                  "Do not revert back peer on recovery";
                              }  // container permanent
    
                              container disable {
                                must
                                  "not(../permanent)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable moving slow peer to updgrp";
                              }  // container disable
                            }  // container dynamic
                          }  // container split-update-group
                        }  // container detection
                      }  // container slow-peer
    
                      container origin-as {
                        description
                          "BGP origin-AS knobs";
                        container validation {
                          description
                            "BGP origin-AS validation knobs";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable RPKI origin-AS validation";
                          }  // container disable
                        }  // container validation
                      }  // container origin-as
    
                      container bestpath {
                        description
                          "Change default route selection criteria";
                        container origin-as {
                          description
                            "BGP origin-AS knobs";
                          container allow {
                            description
                              "BGP origin-AS knobs";
                            container invalid {
                              presence
                                "Indicates a invalid node is configured.";
                              description
                                "BGP bestpath selection will allow 'invalid' origin-AS";
                            }  // container invalid
                          }  // container allow
                        }  // container origin-as
                      }  // container bestpath
    
                      container route-policy {
                        description
                          "Apply route policy";
                        leaf in {
                          type xr:Route-policy-name;
                          description
                            "Apply route policy to inbound routes";
                        }
    
                        leaf out {
                          type xr:Route-policy-name;
                          description
                            "Apply route policy to outbound routes";
                        }
                      }  // container route-policy
    
                      container orf {
                        description
                          "Specify ORF and inbound filtering criteria";
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "Route policy to specify ORF and inbound filter";
                        }
                      }  // container orf
    
                      container remove-private-as {
                        presence
                          "Indicates a remove-private-as node is configured.";
                        description
                          "Remove private AS number from outbound updates";
                        container entire-aspath {
                          must
                            "not(../inheritance-disable or ../internal)";
                          presence
                            "Indicates a entire-aspath node is configured.";
                          description
                            "remove only if all ASes in the path are private";
                        }  // container entire-aspath
    
                        container inheritance-disable {
                          must
                            "not(../entire-aspath or ../internal)";
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent remove-private-AS from being inherited from the parent";
                        }  // container inheritance-disable
    
                        container internal {
                          must
                            "not(../entire-aspath or ../inheritance-disable)";
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "remove only if all ASes in the path are private";
                          container inheritance-disable {
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent remove-private-AS from being inherited from the parent";
                          }  // container inheritance-disable
                        }  // container internal
                      }  // container remove-private-as
    
                      container remove-private-as-inbound {
                        must
                          "not(entire-aspath and inheritance-disable)";
                        presence
                          "Indicates a inbound node is configured.";
                        description
                          "Remove private AS number from inbound updates";
                        container entire-aspath {
                          presence
                            "Indicates a entire-aspath node is configured.";
                          description
                            "remove only if all ASes in the path are private";
                        }  // container entire-aspath
    
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent remove-private-AS from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container remove-private-as-inbound
    
                      container enforce-multiple-labels {
                        presence
                          "Indicates a enforce-multiple-labels node is configured.";
                        description
                          "Enforce support for multiple labels (requires manual session flap)";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent enforce-multiple-labels from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container enforce-multiple-labels
    
                      container route-reflector-client {
                        presence
                          "Indicates a route-reflector-client node is configured.";
                        description
                          "Configure a neighbor as Route Reflector client";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent route-reflector-client from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container route-reflector-client
    
                      container accept-route-legacy-rt {
                        presence
                          "Indicates a accept-route-legacy-rt node is configured.";
                        description
                          "Configure a neighbor to support legacy PE for RT-Constraint AF";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent  accept-route-legacy-RT from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container accept-route-legacy-rt
    
                      container send-community-ebgp {
                        presence
                          "Indicates a send-community-ebgp node is configured.";
                        description
                          "Send community attribute to this external neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent send-community-ebgp from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container send-community-ebgp
    
                      container send-community-gshut-ebgp {
                        presence
                          "Indicates a send-community-gshut-ebgp node is configured.";
                        description
                          "Allow the g-shut community to be sent to this external neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent send-community-gshut-ebgp from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container send-community-gshut-ebgp
    
                      container send-extended-community-ebgp {
                        presence
                          "Indicates a send-extended-community-ebgp node is configured.";
                        description
                          "Send extended community attribute to this external neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent send-extended-community-ebgp from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container send-extended-community-ebgp
    
                      container soft-reconfiguration {
                        description
                          "Per neighbor soft reconfiguration";
                        container inbound {
                          presence
                            "Indicates a inbound node is configured.";
                          description
                            "Allow inbound soft reconfiguration for this neighbor";
                          container rpki-dropped-only {
                            must
                              "not(../rpki-tested-only or ../always or ../inheritance-disable)";
                            presence
                              "Indicates a rpki-dropped-only node is configured.";
                            description
                              "Use soft-reconfig, for paths dropped by route-policy which have RPKI validity state check";
                          }  // container rpki-dropped-only
    
                          container rpki-tested-only {
                            must
                              "not(../rpki-dropped-only or ../always or ../inheritance-disable)";
                            presence
                              "Indicates a rpki-tested-only node is configured.";
                            description
                              "Use soft-reconfig for paths tested or dropped by route-policy which have RPKI validity state check";
                          }  // container rpki-tested-only
    
                          container always {
                            must
                              "not(../rpki-dropped-only or ../rpki-tested-only or ../inheritance-disable)";
                            presence
                              "Indicates a always node is configured.";
                            description
                              "Always use soft reconfig, even if route refresh is supported";
                          }  // container always
    
                          container inheritance-disable {
                            must
                              "not(../rpki-dropped-only or ../rpki-tested-only or ../always)";
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent soft-reconfiguration from being inherited from the parent";
                          }  // container inheritance-disable
                        }  // container inbound
                      }  // container soft-reconfiguration
    
                      container update {
                        description
                          "BGP out bound message";
                        container out {
                          description
                            "BGP out bound message handling";
                          container originator-loopcheck {
                            presence
                              "Indicates a originator-loopcheck node is configured.";
                            description
                              "Loop check for same originator which sent the route";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable originator loop check";
                            }  // container disable
                          }  // container originator-loopcheck
                        }  // container out
                      }  // container update
    
                      container advertise {
                        description
                          "Per neighbor advertisement options";
                        container permanent-network {
                          when
                            "../../af-name != 'vpnv4-unicast' and
    ../../af-name != 'vpnv4-multicast' and
    ../../af-name != 'vpnv4-flowspec' and
    ../../af-name != 'vpnv6-flowspec' and
    ../../af-name != 'vpnv6-multicast' and
    ../../af-name != 'vpnv6-unicast' and
    ../../af-name != 'l2vpn-evpn' and
    ../../af-name != 'l2vpn-mspw' and
    ../../af-name != 'l2vpn-vpls-vpws'";
                          presence
                            "Indicates a permanent-network node is configured.";
                          description
                            "Allow permanent networks for this neighbor";
                        }  // container permanent-network
    
                        container local-labeled-route {
                          when
                            "../../af-name != 'vpnv4-unicast' and
    ../../af-name != 'vpnv4-multicast' and
    ../../af-name != 'vpnv4-flowspec' and
    ../../af-name != 'vpnv6-flowspec' and
    ../../af-name != 'vpnv6-multicast' and
    ../../af-name != 'vpnv6-unicast' and
    ../../af-name != 'l2vpn-evpn' and
    ../../af-name != 'l2vpn-mspw' and
    ../../af-name != 'l2vpn-vpls-vpws'";
                          presence
                            "Indicates a local-labeled-route node is configured.";
                          description
                            "Advertisement of routes with local-label";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Do not advertise routes with local-label via Unicast SAFI";
                          }  // container disable
                        }  // container local-labeled-route
    
                        container vpnv4 {
                          when
                            "../../af-name = 'vpnv4-unicast' or
    ../../af-name = 'vpnv6-unicast' or
    ../../af-name = 'l2vpn-evpn'";
                          description
                            "VPNv4 Address Family";
                          container unicast {
                            description
                              "Address Family modifier";
                            container enable {
                              presence
                                "Indicates an enable node is configured.";
                              description
                                "Enable advertise vpnv4 unicast";
                              container re-originated {
                                presence
                                  "Indicates a re-originated node is configured.";
                                description
                                  "Advertise re-orignated and local routes only";
                                container stitching-rt {
                                  presence
                                    "Indicates a stitching-rt node is configured.";
                                  description
                                    "Advertise re-originated and local routes with stitching Route-Targets";
                                }  // container stitching-rt
                              }  // container re-originated
                            }  // container enable
    
                            container imported-from-default-vrf {
                              description
                                "Default VRF imported routes";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable advertisement of default VRF imported routes";
                              }  // container disable
                            }  // container imported-from-default-vrf
    
                            container imported-from-vrf {
                              description
                                "VRF extranet imported routes";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable advertisement of VRF extranet imported routes";
                              }  // container disable
                            }  // container imported-from-vrf
    
                            container imported-from-bridgedomain {
                              description
                                "VRF EVPN extranet imported routes ";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable advertisement of VRF EVPN extranet imported routes";
                              }  // container disable
                            }  // container imported-from-bridgedomain
                          }  // container unicast
                        }  // container vpnv4
    
                        container vpnv6 {
                          when
                            "../../af-name = 'vpnv4-unicast' or
    ../../af-name = 'vpnv6-unicast' or
    ../../af-name = 'l2vpn-evpn'";
                          description
                            "VPNv6 Address Family";
                          container unicast {
                            description
                              "Address Family modifier";
                            container enable {
                              presence
                                "Indicates an enable node is configured.";
                              description
                                "Enable advertise vpnv6 unicast";
                              container re-originated {
                                presence
                                  "Indicates a re-originated node is configured.";
                                description
                                  "Advertise Re-orignated routes only";
                                container stitching-rt {
                                  presence
                                    "Indicates a stitching-rt node is configured.";
                                  description
                                    "Advertise re-originated routes with stitching Route-Targets";
                                }  // container stitching-rt
                              }  // container re-originated
                            }  // container enable
    
                            container imported-from-default-vrf {
                              description
                                "Default VRF imported routes";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable advertisement of default VRF imported routes";
                              }  // container disable
                            }  // container imported-from-default-vrf
    
                            container imported-from-vrf {
                              description
                                "VRF extranet imported routes";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable advertisement of VRF extranet imported routes";
                              }  // container disable
                            }  // container imported-from-vrf
    
                            container imported-from-bridgedomain {
                              description
                                "VRF EVPN extranet imported routes";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable advertisement of VRF EVPN extranet imported routes";
                              }  // container disable
                            }  // container imported-from-bridgedomain
                          }  // container unicast
                        }  // container vpnv6
    
                        container l2vpn {
                          when
                            "../../af-name = 'vpnv4-unicast' or
    ../../af-name = 'vpnv6-unicast' or
    ../../af-name = 'l2vpn-evpn'";
                          description
                            "L2VPN Address Family";
                          container evpn {
                            when
                              "../../../af-name = 'l2vpn-evpn'";
                            presence
                              "Indicates a evpn node is configured.";
                            description
                              "Address Family modifier";
                            container re-originated {
                              presence
                                "Indicates a re-originated node is configured.";
                              description
                                "Advertise Re-orignated routes only";
                              container stitching-rt {
                                presence
                                  "Indicates a stitching-rt node is configured.";
                                description
                                  "Advertise re-originated routes with stitching Route-Targets";
                              }  // container stitching-rt
                            }  // container re-originated
                          }  // container evpn
    
                          container evpn-disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable Advertisement of selected SAFI";
                          }  // container evpn-disable
    
                          container vpls-vpws {
                            description
                              "Address Family modifier";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable Advertisement of selected SAFI";
                            }  // container disable
                          }  // container vpls-vpws
    
                          container mspw {
                            description
                              "Address Family modifier";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable Advertisement of selected SAFI";
                            }  // container disable
                          }  // container mspw
                        }  // container l2vpn
                      }  // container advertise
    
                      container encapsulation-type {
                        when
                          "../af-name = 'ipv4-unicast' or
    ../af-name = 'ipv6-unicast' or
    ../af-name = 'vpnv4-unicast' or
    ../af-name = 'vpnv6-unicast' or
    ../af-name = 'l2vpn-evpn'";
                        description
                          "Specify encapsulation type";
                        container vxlan {
                          when
                            "../../af-name = 'vpnv4-unicast' or
    ../../af-name = 'vpnv6-unicast' or
    ../../af-name = 'l2vpn-evpn'";
                          must "not(../srv6)";
                          presence
                            "Indicates a vxlan node is configured.";
                          description
                            "VxLAN encapsulation";
                        }  // container vxlan
    
                        container srv6 {
                          when
                            "../../af-name != 'l2vpn-evpn'";
                          must "not(../vxlan)";
                          presence
                            "Indicates a srv6 node is configured.";
                          description
                            "SRv6 encapsulation";
                        }  // container srv6
                      }  // container encapsulation-type
    
                      container segment-routing {
                        when
                          "../af-name = 'vpnv4-unicast'";
                        description
                          "enable segment-routing srv6 version 4";
                        container srv6 {
                          description
                            "srv6 version 4";
                          container prefix-sid-type4 {
                            presence
                              "Indicates a prefix-sid-type4 node is configured.";
                            description
                              "Enable prefix sid version 4 encoding";
                          }  // container prefix-sid-type4
                        }  // container srv6
                      }  // container segment-routing
    
                      container import {
                        when
                          "../af-name = 'vpnv4-unicast' or ../af-name = 'vpnv6-unicast'  or ../af-name = 'l2vpn-evpn'";
                        description
                          "Import options for neighbor address-family routes";
                        container stitching-rt {
                          presence
                            "Indicates a stitching-rt node is configured.";
                          description
                            "Import routes using stitching RTs";
                          container re-originate {
                            presence
                              "Indicates a re-originate node is configured.";
                            description
                              "Re-originate imported routes";
                            container stitching-rt {
                              presence
                                "Indicates a stitching-rt node is configured.";
                              description
                                "Reoriginate imported routes by attaching stitching RTs";
                            }  // container stitching-rt
                          }  // container re-originate
                        }  // container stitching-rt
                      }  // container import
    
                      leaf weight {
                        type uint32 {
                          range "0..65535";
                        }
                        description
                          "Set default weight for routes from this neighbor";
                      }
    
                      container allowas-in {
                        presence
                          "Indicates a allowas-in node is configured.";
                        description
                          "Allow as-path with my AS present in it";
                        leaf number-of-occurences {
                          type uint32 {
                            range "1..10";
                          }
                          description
                            "Number of occurences of AS number";
                        }
                      }  // container allowas-in
    
                      container long-lived-graceful-restart {
                        description
                          "Enable long lived graceful restart support";
                        container stale-time {
                          description
                            "Maximum time to wait before purging long-lived stale routes";
                          leaf send {
                            type uint32 {
                              range
                                "0..16777215";
                            }
                            description
                              "Stale-time sent in LLGR Capability";
                          }
    
                          leaf accept {
                            type uint32 {
                              range
                                "0..16777215";
                            }
                            description
                              "Maximum stale-time acceptable from neighbor";
                          }
                        }  // container stale-time
    
                        container capable {
                          presence
                            "Indicates a capable node is configured.";
                          description
                            "Treat neighbor as LLGR capable";
                        }  // container capable
                      }  // container long-lived-graceful-restart
    
                      container as-override {
                        presence
                          "Indicates a as-override node is configured.";
                        description
                          "Override matching AS-number while sending update";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent as-override from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container as-override
    
                      container aigp {
                        presence
                          "Indicates a aigp node is configured.";
                        description
                          "Enable AIGP for this neighbor ";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable AIGP";
                        }  // container disable
                      }  // container aigp
    
                      container aigp-send {
                        description "Copy AIGP";
                        container cost-community {
                          must
                            "(cost-community-id and poi) or disable";
                          presence
                            "Indicates a cost-community node is configured.";
                          description
                            "Send AIGP value in Cost Community";
                          leaf cost-community-id {
                            type uint32 {
                              range "0..255";
                            }
                            must
                              "not(../disable)";
                            description
                              "Cost community ID";
                          }
    
                          container poi {
                            must
                              "(igp-cost or pre-bestpath) and not(igp-cost and pre-bestpath)";
                            presence
                              "Indicates a poi node is configured.";
                            description
                              "Point of insertion for bestpath calculation";
                            container igp-cost {
                              presence
                                "Indicates a igp-cost node is configured.";
                              description
                                "Cost community is used after IGP distance to next hop";
                              container transitive {
                                presence
                                  "Indicates a transitive node is configured.";
                                description
                                  "Enable transitive cost community";
                              }  // container transitive
                            }  // container igp-cost
    
                            container pre-bestpath {
                              presence
                                "Indicates a pre-bestpath node is configured.";
                              description
                                "Cost community is first step in best path calculation";
                              container transitive {
                                presence
                                  "Indicates a transitive node is configured.";
                                description
                                  "Enable transitive cost community";
                              }  // container transitive
                            }  // container pre-bestpath
                          }  // container poi
    
                          container disable {
                            must
                              "not(../cost-community-id)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable aigp send cost-community";
                          }  // container disable
                        }  // container cost-community
    
                        container med {
                          presence
                            "Indicates a med node is configured.";
                          description
                            "Send AIGP value in MED";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable aigp send med";
                          }  // container disable
                        }  // container med
                      }  // container aigp-send
    
                      container validation {
                        when
                          "../af-name = 'ipv4-flowspec' or ../af-name = 'ipv6-flowspec'";
                        presence
                          "Indicates a validation node is configured.";
                        description
                          "Flowspec Validation for this neighbor ";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable Flowspec Validation";
                        }  // container disable
    
                        container redirect {
                          description
                            "Flowspec Redirect nexthop Validation";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable Flowspec Redirect nexthop Validation";
                          }  // container disable
                        }  // container redirect
                      }  // container validation
    
                      container send-multicast-attributes {
                        when
                          "../af-name = 'ipv4-unicast' or ../af-name = 'ipv6-unicast' or ../af-name = 'ipv4-labeled-unicast' or ../af-name = 'ipv6-labeled-unicast' or ../af-name = 'ipv4-multicast' or ../af-name = 'ipv6-multicast' or ../af-name = 'ipv4-mvpn' or ../af-name = 'ipv6-mvpn'";
                        presence
                          "Indicates a send-multicast-attributes node is configured.";
                        description
                          "Send multicast attributes to this neighbor ";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable send multicast attribute";
                        }  // container disable
                      }  // container send-multicast-attributes
    
                      container signalling {
                        description
                          "Signalling protocols to disable, BGP or LDP";
                        container bgp {
                          description
                            "Select BGP to disable";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable Signalling type";
                          }  // container disable
                        }  // container bgp
    
                        container ldp {
                          description
                            "Select LDP to disable";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable Signalling type";
                          }  // container disable
                        }  // container ldp
                      }  // container signalling
    
                      container accept-own {
                        presence
                          "Indicates a accept-own node is configured.";
                        description
                          "Handle self-originated routes with Accept-Own community";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent item being inherited from a parent group";
                        }  // container inheritance-disable
                      }  // container accept-own
                    }  // list address-family
                  }  // container address-families
    
                  container update {
                    description
                      "BGP Update configuration";
                    container in {
                      description
                        "Inbound update message handling";
                      container filtering {
                        presence
                          "Indicates a filtering node is configured.";
                        description
                          "Inbound update message filtering";
                        container message {
                          description
                            "Filtered update messages";
                          container buffers {
                            presence
                              "Indicates a buffers node is configured.";
                            description
                              "Filtered update message buffers";
                            leaf number-of-buffers {
                              type uint32 {
                                range "0..25";
                              }
                              mandatory true;
                              description
                                "Filtered update message buffers";
                            }
    
                            container non-circular {
                              presence
                                "Indicates a non-circular node is configured.";
                              description
                                "Message buffer list is not circular";
                            }  // container non-circular
                          }  // container buffers
                        }  // container message
    
                        container logging {
                          description
                            "Update filtering syslog message";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable update filtering syslog message";
                          }  // container disable
                        }  // container logging
    
                        container attribute-filter {
                          description
                            "Attribute-filter configuration";
                          leaf group {
                            type string {
                              length "1..1024";
                            }
                            description
                              "Attribute-filter group configuration";
                          }
                        }  // container attribute-filter
                      }  // container filtering
    
                      container merge {
                        description
                          "Merge incoming updates";
                        container safi {
                          description
                            "SAFI of the NLRIs to merge";
                          container unicast {
                            description
                              "IPv4/IPv6 unicast paths";
                            container labeled-unicast {
                              presence
                                "Indicates a labeled-unicast node is configured.";
                              description
                                "IPv4/IPv6 labeled-unicast paths";
                              container inheritance-disable {
                                presence
                                  "Indicates a inheritance-disable node is configured.";
                                description
                                  "Do not inherit this configuration from parent group";
                              }  // container inheritance-disable
                            }  // container labeled-unicast
                          }  // container unicast
                        }  // container safi
                      }  // container merge
                    }  // container in
                  }  // container update
    
                  container graceful-maintenance {
                    presence
                      "Indicates a graceful-maintenance node is configured.";
                    description
                      "Attributes for Graceful Maintenance. This will cause neig dprefer routes from this router and choonas. This allows the router to be brourt of service gracefully.";
                    container local-preference {
                      must
                        "local-preference-value or inheritance-disable";
                      presence
                        "Indicates a local-preference node is configured.";
                      description
                        "local preference with which to advertise routes to ibgps. Default=No Touch";
                      leaf local-preference-value {
                        type uint32 {
                          range "0..4294967295";
                        }
                        description
                          "Range of values for Local Preference";
                      }
    
                      container inheritance-disable {
                        presence
                          "Indicates a inheritance-disable node is configured.";
                        description
                          "Prevent local preference from being inherited from the parent";
                      }  // container inheritance-disable
                    }  // container local-preference
    
                    container as-prepends {
                      must
                        "number-of-as-prepends or inheritance-disable";
                      presence
                        "Indicates a as-prepends node is configured.";
                      description
                        "Number of times to prepend the local AS number to the AS pous. Default=0";
                      leaf number-of-as-prepends {
                        type uint32 {
                          range "0..6";
                        }
                        description
                          "Range of number of AS prepends";
                      }
    
                      container inheritance-disable {
                        presence
                          "Indicates a inheritance-disable node is configured.";
                        description
                          "Prevent AS prepends from being inherited from the parent";
                      }  // container inheritance-disable
                    }  // container as-prepends
    
                    container activate {
                      presence
                        "Indicates a activate node is configured.";
                      description
                        "Routes will be announced with the graceful maintenance
    attrhi activated either here or under router
    bgp atn. While activated, all routes to this
    neigl  announced with the attributes
    conferand all routes from this neighbor will
    be a tother neighbors with the graceful
    mainatibutes configured under those
    neighe-shut community will be announced
    regaf e other attributes configured here. To
    allosh community to be announced to ebgp
    neigheend-community-gshut-ebgp configuration
    is air. Note: changes to the attributes will
    not ecwhile activated.";
                      container inheritance-disable {
                        presence
                          "Indicates a inheritance-disable node is configured.";
                        description
                          "Prevent activate from being inherited from the parent";
                      }  // container inheritance-disable
                    }  // container activate
                  }  // container graceful-maintenance
    
                  leaf remote-as {
                    type xr:Bgp-as-number;
                    description "bgp as-number";
                  }
    
                  leaf remote-as-list {
                    type string {
                      length "1..1024";
                    }
                    description
                      "Remote as-list configuration";
                  }
    
                  container use {
                    description
                      "Inherit configuration from a group";
                    leaf session-group {
                      type string {
                        length "1..1024";
                      }
                      description
                        "Inherit address-family independent config from a session-group";
                    }
    
                    leaf neighbor-group {
                      type string {
                        length "1..1024";
                      }
                      description
                        "Inherit configuration from a neighbor-group";
                    }
                  }  // container use
    
                  container advertisement-interval {
                    presence
                      "Indicates a advertisement-interval node is configured.";
                    description
                      "Minimum interval between sending BGP routing updates";
                    leaf time-in-seconds {
                      type uint32 {
                        range "0..600";
                      }
                      mandatory true;
                      description
                        "Minimum interval between sending BGP routing updates";
                    }
    
                    leaf time-in-milliseconds {
                      type uint32 {
                        range "0..999";
                      }
                      description
                        "time in milliseconds";
                    }
                  }  // container advertisement-interval
    
                  leaf description {
                    type string {
                      length "1..1024";
                    }
                    description
                      "Neighbor specific description";
                  }
    
                  container ignore-connected-check {
                    presence
                      "Indicates a ignore-connected-check node is configured.";
                    description
                      "Bypass the directly connected nexthop check for single-hop eBGP peering";
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent ignore-connected-check from being inherited from the parent";
                    }  // container inheritance-disable
                  }  // container ignore-connected-check
    
                  container ebgp-multihop {
                    presence
                      "Indicates a ebgp-multihop node is configured.";
                    description
                      "Allow EBGP neighbors not on directly connected networks";
                    leaf maximum-hop-count {
                      type uint32 {
                        range "1..255";
                      }
                      mandatory true;
                      description
                        "maximum hop count";
                    }
    
                    container mpls {
                      presence
                        "Indicates a mpls node is configured.";
                      description
                        "Disable BGP MPLS forwarding";
                    }  // container mpls
                  }  // container ebgp-multihop
    
                  container tcp {
                    description
                      "TCP session configuration commands";
                    container mss {
                      must
                        "initial-mss or inheritance-disable";
                      presence
                        "Indicates a mss node is configured.";
                      description
                        "Maximum Segment Size";
                      leaf initial-mss {
                        type uint32 {
                          range "68..10000";
                        }
                        description
                          "TCP initial maximum segment size";
                      }
    
                      container inheritance-disable {
                        presence
                          "Indicates a inheritance-disable node is configured.";
                        description
                          "Prevent tcp mss from being inherited from the parent";
                      }  // container inheritance-disable
                    }  // container mss
                  }  // container tcp
    
                  container bmp-activate {
                    description
                      "Enable BMP logging for this neighbor";
                    container servers {
                      description
                        "Enable BMP connection to particular server";
                      list server {
                        key "server-id";
                        description
                          "Enable BMP connection to particular server";
                        leaf server-id {
                          type uint32 {
                            range "1..8";
                          }
                          description
                            "Enable BMP connection to particular server";
                        }
                      }  // list server
                    }  // container servers
                  }  // container bmp-activate
    
                  container bfd {
                    description
                      "Configure BFD parameters";
                    container fast-detect {
                      must
                        "not(strict-mode and inheritance-disable)";
                      presence
                        "Indicates a fast-detect node is configured.";
                      description
                        "Enable Fast detection";
                      container strict-mode {
                        presence
                          "Indicates a strict-mode node is configured.";
                        description
                          "Hold down neighbor session until BFD session is up";
                      }  // container strict-mode
    
                      container inheritance-disable {
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Prevent bfd settings from being inherited from the parent";
                      }  // container inheritance-disable
                    }  // container fast-detect
    
                    leaf minimum-interval {
                      type uint32 {
                        range "3..30000";
                      }
                      description
                        "Hello interval";
                    }
    
                    leaf multiplier {
                      type uint32 {
                        range "2..16";
                      }
                      description
                        "Detect multiplier";
                    }
                  }  // container bfd
    
                  container keychain {
                    must
                      "name or inheritance-disable";
                    presence
                      "Indicates a keychain node is configured.";
                    description
                      "Set keychain based authentication";
                    leaf name {
                      type string {
                        length "1..32";
                      }
                      description
                        "Name of the key chain - maximum 32 characters";
                    }
    
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent keychain from being inherited from parent";
                    }  // container inheritance-disable
                  }  // container keychain
    
                  container local-as {
                    must
                      "as-number or inheritance-disable";
                    presence
                      "Indicates a local-as node is configured.";
                    description
                      "Specify local AS number";
                    leaf as-number {
                      type xr:Bgp-as-number;
                      description
                        "bgp as-number";
                    }
    
                    container no-prepend {
                      presence
                        "Indicates a no-prepend node is configured.";
                      description
                        "Do not prepend local AS to announcements from this neighbor";
                      container replace-as {
                        presence
                          "Indicates a replace-as node is configured.";
                        description
                          "Prepend only local AS to announcements to this neighbor";
                        container dual-as {
                          presence
                            "Indicates a dual-as node is configured.";
                          description
                            "Dual-AS mode";
                        }  // container dual-as
                      }  // container replace-as
                    }  // container no-prepend
    
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent local AS from being inherited from parent";
                    }  // container inheritance-disable
                  }  // container local-as
    
                  container password {
                    must
                      "encrypted or inheritance-disable";
                    presence
                      "Indicates a password node is configured.";
                    description "Set a password";
                    leaf encrypted {
                      type xr:Proprietary-password;
                      description
                        "Specifies an ENCRYPTED password will follow";
                    }
    
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent password from being inherited from parent";
                    }  // container inheritance-disable
                  }  // container password
    
                  container receive-buffer-size {
                    presence
                      "Indicates a receive-buffer-size node is configured.";
                    description
                      "Set socket and BGP receive buffer size";
                    leaf receive-socket-buffer-size {
                      type uint32 {
                        range "512..131072";
                      }
                      mandatory true;
                      description
                        "Set socket and BGP receive buffer size";
                    }
    
                    leaf bgp-read-buffer-size {
                      type uint32 {
                        range "512..131072";
                      }
                      description
                        "BGP Read buffer size in bytes";
                    }
                  }  // container receive-buffer-size
    
                  container send-buffer-size {
                    presence
                      "Indicates a send-buffer-size node is configured.";
                    description
                      "Set socket and BGP send buffer size";
                    leaf send-socket-buffer-size {
                      type uint32 {
                        range "4096..131072";
                      }
                      mandatory true;
                      description
                        "Set socket and BGP send buffer size";
                    }
    
                    leaf bgp-write-buffer-size {
                      type uint32 {
                        range "4096..131072";
                      }
                      description
                        "BGP Write buffer size in bytes";
                    }
                  }  // container send-buffer-size
    
                  container shutdown {
                    presence
                      "Indicates a shutdown node is configured.";
                    description
                      "Administratively shut down this neighbor";
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent this neighbor being shutdown, even if its parent is";
                    }  // container inheritance-disable
                  }  // container shutdown
    
                  container timers {
                    presence
                      "Indicates a timers node is configured.";
                    description
                      "BGP per neighbor timers";
                    leaf keepalive-interval {
                      type uint32 {
                        range "0..65535";
                      }
                      mandatory true;
                      description "BGP timers";
                    }
    
                    leaf holdtime {
                      type union {
                        type uint32 {
                          range "0";
                        }
                        type uint32 {
                          range "3..65535";
                        }
                      }
                      mandatory true;
                      description
                        "Holdtime. Set 0 to disable keepalives/hold time.";
                    }
    
                    leaf minimum-acceptable-holdtime {
                      type union {
                        type uint32 {
                          range "0";
                        }
                        type uint32 {
                          range "3..65535";
                        }
                      }
                      description
                        "Minimum acceptable holdtime from neighbor. Set 0 to disable keepalives/hold time.";
                    }
                  }  // container timers
    
                  container local {
                    description
                      "Configure local parameter";
                    container address {
                      must
                        "ip-address or inheritance-disable";
                      presence
                        "Indicates a address node is configured.";
                      description
                        "use configured local address for bgp peering";
                      leaf ip-address {
                        type inet:ip-address-no-zone;
                        description
                          "IPv4 address";
                      }
    
                      container inheritance-disable {
                        presence
                          "Indicates a inheritance-disable node is configured.";
                        description
                          "Prevent local address from being inherited from parent";
                      }  // container inheritance-disable
                    }  // container address
                  }  // container local
    
                  container log {
                    description
                      "Logging update messages per neighbor";
                    container message {
                      description
                        "Logging update/notification messages per neighbor";
                      container in {
                        description
                          "Inbound log messages";
                        leaf message-log-buffer-size {
                          type uint32 {
                            range "1..500";
                          }
                          description
                            "Range for message log buffer size";
                        }
    
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable inbound message logging";
                        }  // container disable
    
                        container inheritance-diable {
                          presence
                            "Indicates a inheritance-diable node is configured.";
                          description
                            "Prevents the msg log from being inherited from the parent";
                        }  // container inheritance-diable
                      }  // container in
    
                      container out {
                        description
                          "Outbound log messages";
                        leaf message-log-buffer-size {
                          type uint32 {
                            range "1..500";
                          }
                          description
                            "Range for message log buffer size";
                        }
    
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable outbound message logging";
                        }  // container disable
    
                        container inheritance-diable {
                          presence
                            "Indicates a inheritance-diable node is configured.";
                          description
                            "Prevents the msg log from being inherited from the parent";
                        }  // container inheritance-diable
                      }  // container out
                    }  // container message
                  }  // container log
    
                  leaf update-source {
                    type xr:Interface-name;
                    description
                      "Source of routing updates";
                  }
    
                  container local-address-subnet {
                    description
                      "Local address subnet of routing updates";
                    leaf ip-address {
                      type inet:ip-address-no-zone;
                      description
                        "IP address and mask length";
                    }
    
                    leaf mask-length {
                      type uint32 {
                        range "0..128";
                      }
                      description
                        "IP address and mask length";
                    }
                  }  // container local-address-subnet
    
                  container dmz-link-bandwidth {
                    presence
                      "Indicates a dmz-link-bandwidth node is configured.";
                    description
                      "Propagate the DMZ link bandwidth";
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent dmz-link-bandwidth from being inherited from the parent";
                    }  // container inheritance-disable
                  }  // container dmz-link-bandwidth
    
                  container ebgp-recv-extcommunity-dmz {
                    presence
                      "Indicates a ebgp-recv-extcommunity-dmz node is configured.";
                    description
                      "Receive extcommunity dmz link bandwidth from ebgp neighbor";
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent ebgp-send-community-dmz from being inherited from parent";
                    }  // container inheritance-disable
                  }  // container ebgp-recv-extcommunity-dmz
    
                  container ebgp-send-extcommunity-dmz {
                    must
                      "not(cumulative and inheritance-disable)";
                    presence
                      "Indicates a ebgp-send-extcommunity-dmz node is configured.";
                    description
                      "Send extended community dmz link bandwidth to ebgp neighbor";
                    container cumulative {
                      presence
                        "Indicates a cumulative node is configured.";
                      description
                        "Send cumulative community dmz link bandwidth of all multipaths to ebgp neighbor";
                    }  // container cumulative
    
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent ebgp-send-extcommunity-dmz from being inherited from parent";
                    }  // container inheritance-disable
                  }  // container ebgp-send-extcommunity-dmz
    
                  container ttl-security {
                    presence
                      "Indicates a ttl-security node is configured.";
                    description
                      "Enable EBGP TTL security";
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent ttl-security from being inherited from the parent";
                    }  // container inheritance-disable
                  }  // container ttl-security
    
                  container session-open-mode {
                    description
                      "Establish BGP session using this TCP open mode";
                    container active-only {
                      must
                        "not(../passive-only or ../both)";
                      presence
                        "Indicates a active-only node is configured.";
                      description "Active only";
                    }  // container active-only
    
                    container passive-only {
                      must
                        "not(../active-only or ../both)";
                      presence
                        "Indicates a passive-only node is configured.";
                      description "Passive only";
                    }  // container passive-only
    
                    container both {
                      must
                        "not(../active-only or ../passive-only)";
                      presence
                        "Indicates a both node is configured.";
                      description
                        "Prevent session-open-mode being inherited from the parent";
                    }  // container both
                  }  // container session-open-mode
    
                  leaf dscp {
                    type enumeration {
                      enum "default" {
                        value 0;
                        description
                          "Set packets with default dscp (000000)";
                      }
                      enum "cs1" {
                        value 8;
                        description
                          "Set packets with CS1(precedence 1) dscp (001000)";
                      }
                      enum "af11" {
                        value 10;
                        description
                          "Set packets with AF11 dscp (001010)";
                      }
                      enum "af12" {
                        value 12;
                        description
                          "Set packets with AF12 dscp (001100)";
                      }
                      enum "af13" {
                        value 14;
                        description
                          "Set packets with AF13 dscp (001110)";
                      }
                      enum "cs2" {
                        value 16;
                        description
                          "Set packets with CS2(precedence 2) dscp (010000)";
                      }
                      enum "af21" {
                        value 18;
                        description
                          "Set packets with AF21 dscp (010010)";
                      }
                      enum "af22" {
                        value 20;
                        description
                          "Set packets with AF22 dscp (010100)";
                      }
                      enum "af23" {
                        value 22;
                        description
                          "Set packets with AF23 dscp (010110)";
                      }
                      enum "cs3" {
                        value 24;
                        description
                          "Set packets with CS3(precedence 3) dscp (011000)";
                      }
                      enum "af31" {
                        value 26;
                        description
                          "Set packets with AF31 dscp (011010)";
                      }
                      enum "af32" {
                        value 28;
                        description
                          "Set packets with AF32 dscp (011100)";
                      }
                      enum "af33" {
                        value 30;
                        description
                          "Set packets with AF33 dscp (011110)";
                      }
                      enum "cs4" {
                        value 32;
                        description
                          "Set packets with CS4(precedence 4) dscp (100000)";
                      }
                      enum "af41" {
                        value 34;
                        description
                          "Set packets with AF41 dscp (100010)";
                      }
                      enum "af42" {
                        value 36;
                        description
                          "Set packets with AF42 dscp (100100)";
                      }
                      enum "af43" {
                        value 38;
                        description
                          "Set packets with AF43 dscp (100110)";
                      }
                      enum "cs5" {
                        value 40;
                        description
                          "Set packets with CS5(precedence 5) dscp (101000)";
                      }
                      enum "ef" {
                        value 46;
                        description
                          "Set packets with EF dscp (101110)";
                      }
                      enum "cs6" {
                        value 48;
                        description
                          "Set packets with CS6(precedence 6) dscp (110000)";
                      }
                      enum "cs7" {
                        value 56;
                        description
                          "Set packets with CS7(precedence 7) dscp (111000)";
                      }
                    }
                    description
                      "Set IP DSCP (DiffServ CodePoint)";
                  }
    
                  leaf precedence {
                    type enumeration {
                      enum "routine" {
                        value 0;
                        description
                          "Set packets with routine precedence (0)";
                      }
                      enum "priority" {
                        value 1;
                        description
                          "Set packets with priority precedence (1)";
                      }
                      enum "immediate" {
                        value 2;
                        description
                          "Set packets with immediate precedence (2)";
                      }
                      enum "flash" {
                        value 3;
                        description
                          "Set packets with flash precedence (3)";
                      }
                      enum "flash-override" {
                        value 4;
                        description
                          "Set packets with flash override precedence (4)";
                      }
                      enum "critical" {
                        value 5;
                        description
                          "Set packets with critical precedence (5)";
                      }
                      enum "internet" {
                        value 6;
                        description
                          "Set packets with internetwork control precedence (6)";
                      }
                      enum "network" {
                        value 7;
                        description
                          "Set packets with network control precedence (7)";
                      }
                    }
                    description "Set precedence";
                  }
    
                  container capability {
                    description
                      "Advertise capability to the peer";
                    container suppress {
                      description
                        "Suppress advertising capability to the peer ";
                      container four-byte-as {
                        presence
                          "Indicates a four-byte-as node is configured.";
                        description
                          "4-byte-as capability";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent capability suppress 4-type-as being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container four-byte-as
    
                      container all {
                        presence
                          "Indicates a all node is configured.";
                        description
                          "All capabilities";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Do not inherit this configuration from parent group";
                        }  // container inheritance-disable
                      }  // container all
    
                      container extended-nexthop-encoding {
                        presence
                          "Indicates a extended-nexthop-encoding node is configured.";
                        description
                          "Extended-nexthop-encoding capabilities (IETF RFC 5549)";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Do not inherit this configuration from parent group";
                        }  // container inheritance-disable
                      }  // container extended-nexthop-encoding
                    }  // container suppress
    
                    container additional-paths {
                      description
                        "Additional paths capability";
                      container send {
                        presence
                          "Indicates a send node is configured.";
                        description
                          "Additional paths Send capability";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Do not advertise additional paths Send capability";
                        }  // container disable
                      }  // container send
    
                      container receive {
                        presence
                          "Indicates a receive node is configured.";
                        description
                          "Additional paths Receive capability";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Do not advertise additional paths Receive capability";
                        }  // container disable
                      }  // container receive
                    }  // container additional-paths
                  }  // container capability
    
                  container graceful-restart {
                    presence
                      "Indicates a graceful-restart node is configured.";
                    description
                      "Enable graceful restart support for this neighbor";
                    container disable {
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Disable graceful restart support for this neighbor";
                    }  // container disable
    
                    leaf restart-time {
                      type uint32 {
                        range "1..4095";
                      }
                      description
                        "Restart time advertised to the neighbor";
                    }
    
                    leaf stalepath-time {
                      type uint32 {
                        range "1..4095";
                      }
                      description
                        "Maximum time to wait for restart of GR capable peer";
                    }
                  }  // container graceful-restart
    
                  container enforce-first-as {
                    presence
                      "Indicates a enforce-first-as node is configured.";
                    description
                      "Enforce the first AS for EBGP routes";
                    container disable {
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Do not enforce the first AS for EBGP routes";
                    }  // container disable
                  }  // container enforce-first-as
    
                  container cluster-id {
                    description
                      "Enter cluster id for this neighbor";
                    leaf route-reflector-cluster-id {
                      type uint32 {
                        range "1..4294967295";
                      }
                      description
                        "Route-Reflector Cluster-id as 32 bit quantity";
                    }
    
                    leaf ip-address {
                      type inet:ipv4-address-no-zone;
                      description
                        "Route-Reflector Cluster-id in IP address format";
                    }
                  }  // container cluster-id
    
                  leaf maximum-peers {
                    type uint32 {
                      range "1..4095";
                    }
                    description
                      "Maximum dynamic neighbors";
                  }
    
                  leaf idle-watch-time {
                    type uint32 {
                      range "30..1800";
                    }
                    description
                      "Maximum time to wait for deletion of IDLE state dynamic peer";
                  }
    
                  container egress-engineering {
                    presence
                      "Indicates a egress-engineering node is configured.";
                    description
                      "Enable egress peer engineering for this neighbor";
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Do not inherit egress-engineering from the parent";
                    }  // container inheritance-disable
                  }  // container egress-engineering
    
                  container peer-sets {
                    description
                      "Assign this neighbor to a peer-set used for egress peer engineering";
                    list peer-set {
                      key "peer-set-id";
                      description
                        "Assign this neighbor to a peer-set used for egress peer engineering";
                      leaf peer-set-id {
                        type uint32 {
                          range "1..255";
                        }
                        description
                          "Assign this neighbor to a peer-set used for egress peer engineering";
                      }
                    }  // list peer-set
                  }  // container peer-sets
    
                  container peer-node-sid {
                    description
                      "Assign this neighbor a manual SID for egress peer engineering";
                    leaf index {
                      type uint32 {
                        range "0..1033575";
                      }
                      description
                        "Segment Index value which is offset of SRLB";
                    }
                  }  // container peer-node-sid
    
                  container ao {
                    description
                      "Enable Authentiation Option";
                    leaf key-chain-name {
                      type string {
                        length "1..32";
                      }
                      must
                        "not(../inheritance-disable) and (../include-tcp-options/enable or ../include-tcp-options/disable)";
                      description
                        "Name of the key chain - maximum 32 characters";
                    }
    
                    container include-tcp-options {
                      description
                        "Include/Exclude other TCP options in the header";
                      container enable {
                        must
                          "not(../disable or ../../inheritance-disable)";
                        presence
                          "Indicates a enable node is configured.";
                        description
                          "Include other TCP options in the header";
                      }  // container enable
    
                      container disable {
                        must
                          "not(../enable or ../../inheritance-disable)";
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Exclude other TCP options in the header";
                      }  // container disable
    
                      container accept-ao-mismatch-connection {
                        must
                          "../enable or ../disable";
                        presence
                          "Indicates a accept-ao-mismatch-connection node is configured.";
                        description
                          "Accept new connection even if AO mismatched";
                      }  // container accept-ao-mismatch-connection
                    }  // container include-tcp-options
    
                    container inheritance-disable {
                      must
                        "not(../key-chain-name)";
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent keychain from being inherited from parent";
                    }  // container inheritance-disable
                  }  // container ao
    
                  container origin-as {
                    description
                      "BGP origin-AS knobs";
                    container validation {
                      description
                        "BGP origin-AS validation knobs";
                      container disable {
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable RPKI origin-AS validation";
                      }  // container disable
                    }  // container validation
                  }  // container origin-as
    
                  container bestpath {
                    description
                      "Change default route selection criteria";
                    container origin-as {
                      description
                        "BGP origin-AS knobs";
                      container allow {
                        description
                          "BGP origin-AS knobs";
                        container invalid {
                          presence
                            "Indicates a invalid node is configured.";
                          description
                            "BGP bestpath selection will allow 'invalid' origin-AS";
                        }  // container invalid
                      }  // container allow
                    }  // container origin-as
                  }  // container bestpath
                }  // list neighbor-range
              }  // container neighbors
    
              container af-groups {
                description "Specify a AF group";
                list af-group {
                  must
                    "address-families/address-family";
                  key "af-group-name";
                  description
                    "Specify a AF group";
                  leaf af-group-name {
                    type xr:Cisco-ios-xr-string {
                      length "1..1024";
                    }
                    description
                      "Specify a AF group";
                  }
    
                  container address-families {
                    description
                      "Enter Address Family command mode";
                    list address-family {
                      key "af-name";
                      description
                        "Enter Address Family command mode";
                      leaf af-name {
                        type Bgp-address-family;
                        description
                          "Enter Address Family command mode";
                      }
    
                      container use {
                        description
                          "Inherit configuration for this address-family from a group";
                        leaf af-group {
                          type string {
                            length "1..1024";
                          }
                          description
                            "Inherit configuration for this address-family from an af-group";
                        }
                      }  // container use
    
                      container capability {
                        description
                          "Advertise capability to the peer";
                        container orf {
                          description
                            "Advertise ORF capability to the peer";
                          container prefix {
                            description
                              "Advertise address prefix ORF capability to this neighbor";
                            container receive {
                              must
                                "not(../send or ../both or ../none)";
                              presence
                                "Indicates a receive node is configured.";
                              description
                                "Capability to RECEIVE the ORF from this neighbor";
                            }  // container receive
    
                            container send {
                              must
                                "not(../receive or ../both or ../none)";
                              presence
                                "Indicates a send node is configured.";
                              description
                                "Capability to SEND the ORF to this neighbor";
                            }  // container send
    
                            container both {
                              must
                                "not(../receive or ../send or ../none)";
                              presence
                                "Indicates a both node is configured.";
                              description
                                "Capability to RECEIVE and SEND the ORF from/to this neighbor";
                            }  // container both
    
                            container none {
                              must
                                "not(../receive or ../send or ../both)";
                              presence
                                "Indicates a none node is configured.";
                              description
                                "No capability to RECEIVE or SEND the ORF from/to this neighbor";
                            }  // container none
                          }  // container prefix
                        }  // container orf
                      }  // container capability
    
                      container default-originate {
                        presence
                          "Indicates a default-originate node is configured.";
                        description
                          "Originate default route to this neighbor";
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "Route policy to specify criteria to originate default";
                        }
    
                        container inheritance-disable {
                          must
                            "not(../route-policy)";
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent default-originate being inherited from a parent group";
                        }  // container inheritance-disable
                      }  // container default-originate
    
                      container maximum-prefix {
                        presence
                          "Indicates a maximum-prefix node is configured.";
                        description
                          "Maximum number of prefixes to accept from this peer";
                        leaf prefix-limit {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          mandatory true;
                          description
                            "Maximum number of prefixes to accept from this peer";
                        }
    
                        leaf threshold {
                          type uint32 {
                            range "1..100";
                          }
                          mandatory true;
                          description
                            "Threshold value (%) at which to generate a warning msg";
                        }
    
                        container warning-only {
                          presence
                            "Indicates a warning-only node is configured.";
                          description
                            "Only give warning message when limit is exceeded";
                        }  // container warning-only
    
                        leaf restart {
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "Restart time interval";
                        }
    
                        container discard-extra-paths {
                          presence
                            "Indicates a discard-extra-paths node is configured.";
                          description
                            "Discard extra paths when limit is exceeded";
                        }  // container discard-extra-paths
                      }  // container maximum-prefix
    
                      leaf optimal-route-reflection {
                        type string {
                          length "1..32";
                        }
                        description
                          "ORR group name - maximum 32 characters";
                      }
    
                      container next-hop-self {
                        presence
                          "Indicates a next-hop-self node is configured.";
                        description
                          "Disable the next hop calculation for this neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent next-hop-self from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container next-hop-self
    
                      container next-hop-unchanged {
                        presence
                          "Indicates a next-hop-unchanged node is configured.";
                        description
                          "Do not overwrite next hop before advertising to eBGP peers";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent next-hop-unchanged from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container next-hop-unchanged
    
                      container next-hop-unchanged-multipath {
                        presence
                          "Indicates a next-hop-unchanged-multipath node is configured.";
                        description
                          "Do not overwrite nexthop before advertising multipaths";
                      }  // container next-hop-unchanged-multipath
    
                      container multipath {
                        presence
                          "Indicates a multipath node is configured.";
                        description
                          "Paths from this neighbor is eligible for multipath";
                      }  // container multipath
    
                      container slow-peer {
                        description
                          "configuration commands for slow-peer";
                        container detection {
                          description
                            "Enable or disable slow peer detection.";
                          container enable {
                            must
                              "not(../disable) and
    (../split-update-group/static or
     ../split-update-group/dynamic)";
                            presence
                              "Indicates a enable node is configured.";
                            description
                              "Enable slow peer detection";
                          }  // container enable
    
                          container disable {
                            must
                              "not(../enable) and
    (../split-update-group/static or
     ../split-update-group/dynamic)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable slow peer detection";
                          }  // container disable
    
                          container split-update-group {
                            description
                              "Options to split update group";
                            container static {
                              must
                                "not(../dynamic) and (../../enable or ../../disable)";
                              presence
                                "Indicates a static node is configured.";
                              description
                                "Manually move this peer to slow update group";
                            }  // container static
    
                            container dynamic {
                              must
                                "not(../static) and (../../enable or ../../disable)";
                              presence
                                "Indicates a dynamic node is configured.";
                              description
                                "Move peer to slow update group on detection";
                              container permanent {
                                must
                                  "not(../disable)";
                                presence
                                  "Indicates a permanent node is configured.";
                                description
                                  "Do not revert back peer on recovery";
                              }  // container permanent
    
                              container disable {
                                must
                                  "not(../permanent)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable moving slow peer to updgrp";
                              }  // container disable
                            }  // container dynamic
                          }  // container split-update-group
                        }  // container detection
                      }  // container slow-peer
    
                      container origin-as {
                        description
                          "BGP origin-AS knobs";
                        container validation {
                          description
                            "BGP origin-AS validation knobs";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable RPKI origin-AS validation";
                          }  // container disable
                        }  // container validation
                      }  // container origin-as
    
                      container bestpath {
                        description
                          "Change default route selection criteria";
                        container origin-as {
                          description
                            "BGP origin-AS knobs";
                          container allow {
                            description
                              "BGP origin-AS knobs";
                            container invalid {
                              presence
                                "Indicates a invalid node is configured.";
                              description
                                "BGP bestpath selection will allow 'invalid' origin-AS";
                            }  // container invalid
                          }  // container allow
                        }  // container origin-as
                      }  // container bestpath
    
                      container route-policy {
                        leaf in {
                          type xr:Route-policy-name;
                          description
                            "Apply route policy to inbound routes";
                        }
    
                        leaf out {
                          type xr:Route-policy-name;
                          description
                            "Apply route policy to outbound routes";
                        }
                      }  // container route-policy
    
                      container orf {
                        description
                          "Specify ORF and inbound filtering criteria";
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "Route policy to specify ORF and inbound filter";
                        }
                      }  // container orf
    
                      container remove-private-as {
                        presence
                          "Indicates a remove-private-as node is configured.";
                        description
                          "Remove private AS number from outbound updates";
                        container entire-aspath {
                          must
                            "not(../inheritance-disable or ../internal)";
                          presence
                            "Indicates a entire-aspath node is configured.";
                          description
                            "remove only if all ASes in the path are private";
                        }  // container entire-aspath
    
                        container inheritance-disable {
                          must
                            "not(../entire-aspath or ../internal)";
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent remove-private-AS from being inherited from the parent";
                        }  // container inheritance-disable
    
                        container internal {
                          must
                            "not(../entire-aspath or ../inheritance-disable)";
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "remove only if all ASes in the path are private";
                          container inheritance-disable {
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent remove-private-AS from being inherited from the parent";
                          }  // container inheritance-disable
                        }  // container internal
                      }  // container remove-private-as
    
                      container remove-private-as-inbound {
                        must
                          "not(entire-aspath and inheritance-disable)";
                        presence
                          "Indicates a inbound node is configured.";
                        description
                          "Remove private AS number from inbound updates";
                        container entire-aspath {
                          presence
                            "Indicates a entire-aspath node is configured.";
                          description
                            "remove only if all ASes in the path are private";
                        }  // container entire-aspath
    
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent remove-private-AS from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container remove-private-as-inbound
    
                      container enforce-multiple-labels {
                        presence
                          "Indicates a enforce-multiple-labels node is configured.";
                        description
                          "Enforce support for multiple labels (requires manual session flap)";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent enforce-multiple-labels from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container enforce-multiple-labels
    
                      container route-reflector-client {
                        presence
                          "Indicates a route-reflector-client node is configured.";
                        description
                          "Configure a neighbor as Route Reflector client";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent route-reflector-client from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container route-reflector-client
    
                      container accept-route-legacy-rt {
                        presence
                          "Indicates a accept-route-legacy-rt node is configured.";
                        description
                          "Configure a neighbor to support legacy PE for RT-Constraint AF";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent  accept-route-legacy-RT from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container accept-route-legacy-rt
    
                      container send-community-ebgp {
                        presence
                          "Indicates a send-community-ebgp node is configured.";
                        description
                          "Send community attribute to this external neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent send-community-ebgp from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container send-community-ebgp
    
                      container send-community-gshut-ebgp {
                        presence
                          "Indicates a send-community-gshut-ebgp node is configured.";
                        description
                          "Allow the g-shut community to be sent to this external neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent send-community-gshut-ebgp from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container send-community-gshut-ebgp
    
                      container send-extended-community-ebgp {
                        presence
                          "Indicates a send-extended-community-ebgp node is configured.";
                        description
                          "Send extended community attribute to this external neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent send-extended-community-ebgp from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container send-extended-community-ebgp
    
                      container soft-reconfiguration {
                        description
                          "Per neighbor soft reconfiguration";
                        container inbound {
                          presence
                            "Indicates a inbound node is configured.";
                          description
                            "Allow inbound soft reconfiguration for this neighbor";
                          container rpki-dropped-only {
                            must
                              "not(../rpki-tested-only or ../always or ../inheritance-disable)";
                            presence
                              "Indicates a rpki-dropped-only node is configured.";
                            description
                              "Use soft-reconfig, for paths dropped by route-policy which have RPKI validity state check";
                          }  // container rpki-dropped-only
    
                          container rpki-tested-only {
                            must
                              "not(../rpki-dropped-only or ../always or ../inheritance-disable)";
                            presence
                              "Indicates a rpki-tested-only node is configured.";
                            description
                              "Use soft-reconfig for paths tested or dropped by route-policy which have RPKI validity state check";
                          }  // container rpki-tested-only
    
                          container always {
                            must
                              "not(../rpki-dropped-only or ../rpki-tested-only or ../inheritance-disable)";
                            presence
                              "Indicates a always node is configured.";
                            description
                              "Always use soft reconfig, even if route refresh is supported";
                          }  // container always
    
                          container inheritance-disable {
                            must
                              "not(../rpki-dropped-only or ../rpki-tested-only or ../always)";
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent soft-reconfiguration from being inherited from the parent";
                          }  // container inheritance-disable
                        }  // container inbound
                      }  // container soft-reconfiguration
    
                      container update {
                        description
                          "BGP out bound message";
                        container out {
                          description
                            "BGP out bound message handling";
                          container originator-loopcheck {
                            presence
                              "Indicates a originator-loopcheck node is configured.";
                            description
                              "Loop check for same originator which sent the route";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable originator loop check";
                            }  // container disable
                          }  // container originator-loopcheck
                        }  // container out
                      }  // container update
    
                      container advertise {
                        description
                          "Per neighbor advertisement options";
                        container permanent-network {
                          when
                            "../../af-name != 'vpnv4-unicast' and
    ../../af-name != 'vpnv4-multicast' and
    ../../af-name != 'vpnv4-flowspec' and
    ../../af-name != 'vpnv6-flowspec' and
    ../../af-name != 'vpnv6-multicast' and
    ../../af-name != 'vpnv6-unicast' and
    ../../af-name != 'l2vpn-evpn' and
    ../../af-name != 'l2vpn-mspw' and
    ../../af-name != 'l2vpn-vpls-vpws'";
                          presence
                            "Indicates a permanent-network node is configured.";
                          description
                            "Allow permanent networks for this neighbor";
                        }  // container permanent-network
    
                        container local-labeled-route {
                          when
                            "../../af-name != 'vpnv4-unicast' and
    ../../af-name != 'vpnv4-multicast' and
    ../../af-name != 'vpnv4-flowspec' and
    ../../af-name != 'vpnv6-flowspec' and
    ../../af-name != 'vpnv6-multicast' and
    ../../af-name != 'vpnv6-unicast' and
    ../../af-name != 'l2vpn-evpn' and
    ../../af-name != 'l2vpn-mspw' and
    ../../af-name != 'l2vpn-vpls-vpws'";
                          presence
                            "Indicates a local-labeled-route node is configured.";
                          description
                            "Advertisement of routes with local-label";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Do not advertise routes with local-label via Unicast SAFI";
                          }  // container disable
                        }  // container local-labeled-route
    
                        container vpnv4 {
                          when
                            "../../af-name = 'vpnv4-unicast' or
    ../../af-name = 'vpnv6-unicast' or
    ../../af-name = 'l2vpn-evpn'";
                          description
                            "VPNv4 Address Family";
                          container unicast {
                            description
                              "Address Family modifier";
                            container enable {
                              presence
                                "Indicates an enable node is configured.";
                              description
                                "Enable advertise vpnv4 unicast";
                              container re-originated {
                                presence
                                  "Indicates a re-originated node is configured.";
                                description
                                  "Advertise re-orignated and local routes only";
                                container stitching-rt {
                                  presence
                                    "Indicates a stitching-rt node is configured.";
                                  description
                                    "Advertise re-originated and local routes with stitching Route-Targets";
                                }  // container stitching-rt
                              }  // container re-originated
                            }  // container enable
    
                            container imported-from-default-vrf {
                              description
                                "Default VRF imported routes";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable advertisement of default VRF imported routes";
                              }  // container disable
                            }  // container imported-from-default-vrf
    
                            container imported-from-vrf {
                              description
                                "VRF extranet imported routes";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable advertisement of VRF extranet imported routes";
                              }  // container disable
                            }  // container imported-from-vrf
    
                            container imported-from-bridgedomain {
                              description
                                "VRF EVPN extranet imported routes ";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable advertisement of VRF EVPN extranet imported routes";
                              }  // container disable
                            }  // container imported-from-bridgedomain
                          }  // container unicast
                        }  // container vpnv4
    
                        container vpnv6 {
                          when
                            "../../af-name = 'vpnv4-unicast' or
    ../../af-name = 'vpnv6-unicast' or
    ../../af-name = 'l2vpn-evpn'";
                          description
                            "VPNv6 Address Family";
                          container unicast {
                            description
                              "Address Family modifier";
                            container enable {
                              presence
                                "Indicates an enable node is configured.";
                              description
                                "Enable advertise vpnv6 unicast";
                              container re-originated {
                                presence
                                  "Indicates a re-originated node is configured.";
                                description
                                  "Advertise Re-orignated routes only";
                                container stitching-rt {
                                  presence
                                    "Indicates a stitching-rt node is configured.";
                                  description
                                    "Advertise re-originated routes with stitching Route-Targets";
                                }  // container stitching-rt
                              }  // container re-originated
                            }  // container enable
    
                            container imported-from-default-vrf {
                              description
                                "Default VRF imported routes";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable advertisement of default VRF imported routes";
                              }  // container disable
                            }  // container imported-from-default-vrf
    
                            container imported-from-vrf {
                              description
                                "VRF extranet imported routes";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable advertisement of VRF extranet imported routes";
                              }  // container disable
                            }  // container imported-from-vrf
    
                            container imported-from-bridgedomain {
                              description
                                "VRF EVPN extranet imported routes";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable advertisement of VRF EVPN extranet imported routes";
                              }  // container disable
                            }  // container imported-from-bridgedomain
                          }  // container unicast
                        }  // container vpnv6
    
                        container l2vpn {
                          when
                            "../../af-name = 'vpnv4-unicast' or
    ../../af-name = 'vpnv6-unicast' or
    ../../af-name = 'l2vpn-evpn'";
                          description
                            "L2VPN Address Family";
                          container evpn {
                            when
                              "../../../af-name = 'l2vpn-evpn'";
                            presence
                              "Indicates a evpn node is configured.";
                            description
                              "Address Family modifier";
                            container re-originated {
                              presence
                                "Indicates a re-originated node is configured.";
                              description
                                "Advertise Re-orignated routes only";
                              container stitching-rt {
                                presence
                                  "Indicates a stitching-rt node is configured.";
                                description
                                  "Advertise re-originated routes with stitching Route-Targets";
                              }  // container stitching-rt
                            }  // container re-originated
                          }  // container evpn
    
                          container evpn-disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable Advertisement of selected SAFI";
                          }  // container evpn-disable
    
                          container vpls-vpws {
                            description
                              "Address Family modifier";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable Advertisement of selected SAFI";
                            }  // container disable
                          }  // container vpls-vpws
    
                          container mspw {
                            description
                              "Address Family modifier";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable Advertisement of selected SAFI";
                            }  // container disable
                          }  // container mspw
                        }  // container l2vpn
                      }  // container advertise
    
                      container encapsulation-type {
                        when
                          "../af-name = 'ipv4-unicast' or
    ../af-name = 'ipv6-unicast' or
    ../af-name = 'vpnv4-unicast' or
    ../af-name = 'vpnv6-unicast' or
    ../af-name = 'l2vpn-evpn'";
                        description
                          "Specify encapsulation type";
                        container vxlan {
                          when
                            "../../af-name = 'vpnv4-unicast' or
    ../../af-name = 'vpnv6-unicast' or
    ../../af-name = 'l2vpn-evpn'";
                          must "not(../srv6)";
                          presence
                            "Indicates a vxlan node is configured.";
                          description
                            "VxLAN encapsulation";
                        }  // container vxlan
    
                        container srv6 {
                          when
                            "../../af-name != 'l2vpn-evpn'";
                          must "not(../vxlan)";
                          presence
                            "Indicates a srv6 node is configured.";
                          description
                            "SRv6 encapsulation";
                        }  // container srv6
                      }  // container encapsulation-type
    
                      container segment-routing {
                        when
                          "../af-name = 'vpnv4-unicast'";
                        description
                          "enable segment-routing srv6 version 4";
                        container srv6 {
                          description
                            "srv6 version 4";
                          container prefix-sid-type4 {
                            presence
                              "Indicates a prefix-sid-type4 node is configured.";
                            description
                              "Enable prefix sid version 4 encoding";
                          }  // container prefix-sid-type4
                        }  // container srv6
                      }  // container segment-routing
    
                      container import {
                        when
                          "../af-name = 'vpnv4-unicast' or ../af-name = 'vpnv6-unicast'  or ../af-name = 'l2vpn-evpn'";
                        description
                          "Import options for neighbor address-family routes";
                        container stitching-rt {
                          presence
                            "Indicates a stitching-rt node is configured.";
                          description
                            "Import routes using stitching RTs";
                          container re-originate {
                            presence
                              "Indicates a re-originate node is configured.";
                            description
                              "Re-originate imported routes";
                            container stitching-rt {
                              presence
                                "Indicates a stitching-rt node is configured.";
                              description
                                "Reoriginate imported routes by attaching stitching RTs";
                            }  // container stitching-rt
                          }  // container re-originate
                        }  // container stitching-rt
                      }  // container import
    
                      leaf weight {
                        type uint32 {
                          range "0..65535";
                        }
                        description
                          "Set default weight for routes from this neighbor";
                      }
    
                      container allowas-in {
                        presence
                          "Indicates a allowas-in node is configured.";
                        description
                          "Allow as-path with my AS present in it";
                        leaf number-of-occurences {
                          type uint32 {
                            range "1..10";
                          }
                          description
                            "Number of occurences of AS number";
                        }
                      }  // container allowas-in
    
                      container long-lived-graceful-restart {
                        description
                          "Enable long lived graceful restart support";
                        container stale-time {
                          description
                            "Maximum time to wait before purging long-lived stale routes";
                          leaf send {
                            type uint32 {
                              range
                                "0..16777215";
                            }
                            description
                              "Stale-time sent in LLGR Capability";
                          }
    
                          leaf accept {
                            type uint32 {
                              range
                                "0..16777215";
                            }
                            description
                              "Maximum stale-time acceptable from neighbor";
                          }
                        }  // container stale-time
    
                        container capable {
                          presence
                            "Indicates a capable node is configured.";
                          description
                            "Treat neighbor as LLGR capable";
                        }  // container capable
                      }  // container long-lived-graceful-restart
    
                      container as-override {
                        presence
                          "Indicates a as-override node is configured.";
                        description
                          "Override matching AS-number while sending update";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent as-override from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container as-override
    
                      container aigp {
                        presence
                          "Indicates a aigp node is configured.";
                        description
                          "Enable AIGP for this neighbor ";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable AIGP";
                        }  // container disable
                      }  // container aigp
    
                      container aigp-send {
                        description "Copy AIGP";
                        container cost-community {
                          must
                            "(cost-community-id and poi) or disable";
                          presence
                            "Indicates a cost-community node is configured.";
                          description
                            "Send AIGP value in Cost Community";
                          leaf cost-community-id {
                            type uint32 {
                              range "0..255";
                            }
                            must
                              "not(../disable)";
                            description
                              "Cost community ID";
                          }
    
                          container poi {
                            must
                              "(igp-cost or pre-bestpath) and not(igp-cost and pre-bestpath)";
                            presence
                              "Indicates a poi node is configured.";
                            description
                              "Point of insertion for bestpath calculation";
                            container igp-cost {
                              presence
                                "Indicates a igp-cost node is configured.";
                              description
                                "Cost community is used after IGP distance to next hop";
                              container transitive {
                                presence
                                  "Indicates a transitive node is configured.";
                                description
                                  "Enable transitive cost community";
                              }  // container transitive
                            }  // container igp-cost
    
                            container pre-bestpath {
                              presence
                                "Indicates a pre-bestpath node is configured.";
                              description
                                "Cost community is first step in best path calculation";
                              container transitive {
                                presence
                                  "Indicates a transitive node is configured.";
                                description
                                  "Enable transitive cost community";
                              }  // container transitive
                            }  // container pre-bestpath
                          }  // container poi
    
                          container disable {
                            must
                              "not(../cost-community-id)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable aigp send cost-community";
                          }  // container disable
                        }  // container cost-community
    
                        container med {
                          presence
                            "Indicates a med node is configured.";
                          description
                            "Send AIGP value in MED";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable aigp send med";
                          }  // container disable
                        }  // container med
                      }  // container aigp-send
    
                      container validation {
                        when
                          "../af-name = 'ipv4-flowspec' or ../af-name = 'ipv6-flowspec'";
                        presence
                          "Indicates a validation node is configured.";
                        description
                          "Flowspec Validation for this neighbor ";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable Flowspec Validation";
                        }  // container disable
    
                        container redirect {
                          description
                            "Flowspec Redirect nexthop Validation";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable Flowspec Redirect nexthop Validation";
                          }  // container disable
                        }  // container redirect
                      }  // container validation
    
                      container send-multicast-attributes {
                        when
                          "../af-name = 'ipv4-unicast' or ../af-name = 'ipv6-unicast' or ../af-name = 'ipv4-labeled-unicast' or ../af-name = 'ipv6-labeled-unicast' or ../af-name = 'ipv4-multicast' or ../af-name = 'ipv6-multicast' or ../af-name = 'ipv4-mvpn' or ../af-name = 'ipv6-mvpn'";
                        presence
                          "Indicates a send-multicast-attributes node is configured.";
                        description
                          "Send multicast attributes to this neighbor ";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable send multicast attribute";
                        }  // container disable
                      }  // container send-multicast-attributes
    
                      container signalling {
                        description
                          "Signalling protocols to disable, BGP or LDP";
                        container bgp {
                          description
                            "Select BGP to disable";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable Signalling type";
                          }  // container disable
                        }  // container bgp
    
                        container ldp {
                          description
                            "Select LDP to disable";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable Signalling type";
                          }  // container disable
                        }  // container ldp
                      }  // container signalling
    
                      container accept-own {
                        presence
                          "Indicates a accept-own node is configured.";
                        description
                          "Handle self-originated routes with Accept-Own community";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent item being inherited from a parent group";
                        }  // container inheritance-disable
                      }  // container accept-own
    
                      container cluster-id {
                        description
                          "Allow routes with first cluster-id in list is same as the router's cluster id";
                        container allow-equal {
                          presence
                            "Indicates a allow-equal node is configured.";
                          description
                            "Accept routes with first cluster-id in list is same as the router's cluster id";
                          container disable {
                            presence
                              "Indicates a allow-equal node is configured.";
                            description
                              "Prevent the configuration from being inherited.";
                          }  // container disable
                        }  // container allow-equal
                      }  // container cluster-id
    
                      container site-of-origin {
                        description
                          "Site-of-Origin extended community associated with the neighbor";
                        container two-byte-as {
                          must
                            "not(../four-byte-as or ../ip-address)";
                          presence
                            "Indicates a two-byte-as node is configured.";
                          leaf as-number {
                            type xr:Bgp-as-number;
                            mandatory true;
                            description
                              "bgp as-number";
                          }
    
                          leaf index {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            mandatory true;
                            description
                              "ASN2:index (hex or decimal format)";
                          }
                        }  // container two-byte-as
    
                        container four-byte-as {
                          must
                            "not(../two-byte-as or ../ip-address)";
                          presence
                            "Indicates a four-byte-as node is configured.";
                          leaf as-number {
                            type xr:Bgp-as-number;
                            mandatory true;
                            description
                              "4-byte AS number";
                          }
    
                          leaf index {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            mandatory true;
                            description
                              "ASN2:index (hex or decimal format)";
                          }
                        }  // container four-byte-as
    
                        container ip-address {
                          must
                            "not(../two-byte-as or ../four-byte-as)";
                          presence
                            "Indicates a ip-address node is configured.";
                          description
                            "configure this node";
                          leaf ipv4-address {
                            type inet:ipv4-address-no-zone;
                            mandatory true;
                            description
                              "configure this node";
                          }
    
                          leaf index {
                            type uint32 {
                              range "0..65535";
                            }
                            mandatory true;
                            description
                              "IPv4Address:index (hex or decimal format)";
                          }
                        }  // container ip-address
                      }  // container site-of-origin
                    }  // list address-family
                  }  // container address-families
                }  // list af-group
              }  // container af-groups
    
              container session-groups {
                description
                  "Specify a Session group";
                list session-group {
                  key "session-group-name";
                  description
                    "Specify a Session group";
                  leaf session-group-name {
                    type xr:Cisco-ios-xr-string {
                      length "1..1024";
                    }
                    description
                      "Specify a Session group";
                  }
    
                  leaf remote-as {
                    type xr:Bgp-as-number;
                    description "bgp as-number";
                  }
    
                  leaf remote-as-list {
                    type string {
                      length "1..1024";
                    }
                    description
                      "Remote as-list configuration";
                  }
    
                  container use {
                    description
                      "Inherit configuration from a group";
                    leaf session-group {
                      type string {
                        length "1..1024";
                      }
                      description
                        "Inherit address-family independent config from a session-group";
                    }
                  }  // container use
    
                  container advertisement-interval {
                    presence
                      "Indicates a advertisement-interval node is configured.";
                    description
                      "Minimum interval between sending BGP routing updates";
                    leaf time-in-seconds {
                      type uint32 {
                        range "0..600";
                      }
                      mandatory true;
                      description
                        "Minimum interval between sending BGP routing updates";
                    }
    
                    leaf time-in-milliseconds {
                      type uint32 {
                        range "0..999";
                      }
                      description
                        "time in milliseconds";
                    }
                  }  // container advertisement-interval
    
                  leaf description {
                    type string {
                      length "1..1024";
                    }
                    description
                      "Neighbor specific description";
                  }
    
                  container ignore-connected-check {
                    presence
                      "Indicates a ignore-connected-check node is configured.";
                    description
                      "Bypass the directly connected nexthop check for single-hop eBGP peering";
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent ignore-connected-check from being inherited from the parent";
                    }  // container inheritance-disable
                  }  // container ignore-connected-check
    
                  container internal-vpn-client {
                    presence
                      "Indicates a internal-vpn-client node is configured.";
                    description
                      "Preserve iBGP CE neighbor path in ATTR_SET across VPN core";
                  }  // container internal-vpn-client
    
                  container ebgp-multihop {
                    presence
                      "Indicates a ebgp-multihop node is configured.";
                    description
                      "Allow EBGP neighbors not on directly connected networks";
                    leaf maximum-hop-count {
                      type uint32 {
                        range "1..255";
                      }
                      mandatory true;
                      description
                        "maximum hop count";
                    }
    
                    container mpls {
                      presence
                        "Indicates a mpls node is configured.";
                      description
                        "Disable BGP MPLS forwarding";
                    }  // container mpls
                  }  // container ebgp-multihop
    
                  container tcp {
                    description
                      "TCP session configuration commands";
                    container mss {
                      must
                        "initial-mss or inheritance-disable";
                      presence
                        "Indicates a mss node is configured.";
                      description
                        "Maximum Segment Size";
                      leaf initial-mss {
                        type uint32 {
                          range "68..10000";
                        }
                        description
                          "TCP initial maximum segment size";
                      }
    
                      container inheritance-disable {
                        presence
                          "Indicates a inheritance-disable node is configured.";
                        description
                          "Prevent tcp mss from being inherited from the parent";
                      }  // container inheritance-disable
                    }  // container mss
                  }  // container tcp
    
                  container bmp-activate {
                    description
                      "Enable BMP logging for this neighbor";
                    container servers {
                      description
                        "Enable BMP connection to particular server";
                      list server {
                        key "server-id";
                        description
                          "Enable BMP connection to particular server";
                        leaf server-id {
                          type uint32 {
                            range "1..8";
                          }
                          description
                            "Enable BMP connection to particular server";
                        }
                      }  // list server
                    }  // container servers
                  }  // container bmp-activate
    
                  container bfd {
                    description
                      "Configure BFD parameters";
                    container fast-detect {
                      presence
                        "Indicates a fast-detect node is configured.";
                      description
                        "Enable Fast detection";
                      container strict-mode {
                        presence
                          "Indicates a strict-mode node is configured.";
                        description
                          "Hold down neighbor session until BFD session is up";
                      }  // container strict-mode
    
                      container disable {
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Prevent bfd settings from being inherited from the parent";
                      }  // container disable
                    }  // container fast-detect
    
                    leaf minimum-interval {
                      type uint32 {
                        range "3..30000";
                      }
                      description
                        "Hello interval";
                    }
    
                    leaf multiplier {
                      type uint32 {
                        range "2..16";
                      }
                      description
                        "Detect multiplier";
                    }
                  }  // container bfd
    
                  container keychain {
                    must
                      "name or inheritance-disable";
                    presence
                      "Indicates a keychain node is configured.";
                    description
                      "Set keychain based authentication";
                    leaf name {
                      type string {
                        length "1..32";
                      }
                      description
                        "Name of the key chain - maximum 32 characters";
                    }
    
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent keychain from being inherited from parent";
                    }  // container inheritance-disable
                  }  // container keychain
    
                  container local-as {
                    must
                      "as-number or inheritance-disable";
                    presence
                      "Indicates a local-as node is configured.";
                    description
                      "Specify local AS number";
                    leaf as-number {
                      type xr:Bgp-as-number;
                      description
                        "bgp as-number";
                    }
    
                    container no-prepend {
                      presence
                        "Indicates a no-prepend node is configured.";
                      description
                        "Do not prepend local AS to announcements from this neighbor";
                      container replace-as {
                        presence
                          "Indicates a replace-as node is configured.";
                        description
                          "Prepend only local AS to announcements to this neighbor";
                        container dual-as {
                          presence
                            "Indicates a dual-as node is configured.";
                          description
                            "Dual-AS mode";
                        }  // container dual-as
                      }  // container replace-as
                    }  // container no-prepend
    
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent local AS from being inherited from parent";
                    }  // container inheritance-disable
                  }  // container local-as
    
                  container password {
                    must
                      "encrypted or inheritance-disable";
                    presence
                      "Indicates a password node is configured.";
                    description "Set a password";
                    leaf encrypted {
                      type xr:Proprietary-password;
                      description
                        "Specifies an ENCRYPTED password will follow";
                    }
    
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent password from being inherited from parent";
                    }  // container inheritance-disable
                  }  // container password
    
                  container receive-buffer-size {
                    presence
                      "Indicates a receive-buffer-size node is configured.";
                    description
                      "Set socket and BGP receive buffer size";
                    leaf receive-socket-buffer-size {
                      type uint32 {
                        range "512..131072";
                      }
                      mandatory true;
                      description
                        "Set socket and BGP receive buffer size";
                    }
    
                    leaf bgp-read-buffer-size {
                      type uint32 {
                        range "512..131072";
                      }
                      description
                        "BGP Read buffer size in bytes";
                    }
                  }  // container receive-buffer-size
    
                  container send-buffer-size {
                    presence
                      "Indicates a send-buffer-size node is configured.";
                    description
                      "Set socket and BGP send buffer size";
                    leaf send-socket-buffer-size {
                      type uint32 {
                        range "4096..131072";
                      }
                      mandatory true;
                      description
                        "Set socket and BGP send buffer size";
                    }
    
                    leaf bgp-write-buffer-size {
                      type uint32 {
                        range "4096..131072";
                      }
                      description
                        "BGP Write buffer size in bytes";
                    }
                  }  // container send-buffer-size
    
                  container shutdown {
                    presence
                      "Indicates a shutdown node is configured.";
                    description
                      "Administratively shut down this neighbor";
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent this neighbor being shutdown, even if its parent is";
                    }  // container inheritance-disable
                  }  // container shutdown
    
                  container timers {
                    presence
                      "Indicates a timers node is configured.";
                    description
                      "BGP per neighbor timers";
                    leaf keepalive-interval {
                      type uint32 {
                        range "0..65535";
                      }
                      mandatory true;
                      description "BGP timers";
                    }
    
                    leaf holdtime {
                      type union {
                        type uint32 {
                          range "0";
                        }
                        type uint32 {
                          range "3..65535";
                        }
                      }
                      mandatory true;
                      description
                        "Holdtime. Set 0 to disable keepalives/hold time.";
                    }
    
                    leaf minimum-acceptable-holdtime {
                      type union {
                        type uint32 {
                          range "0";
                        }
                        type uint32 {
                          range "3..65535";
                        }
                      }
                      description
                        "Minimum acceptable holdtime from neighbor. Set 0 to disable keepalives/hold time.";
                    }
                  }  // container timers
    
                  container local {
                    description
                      "Configure local parameter";
                    container address {
                      must
                        "ip-address or inheritance-disable";
                      presence
                        "Indicates a address node is configured.";
                      description
                        "use configured local address for bgp peering";
                      leaf ip-address {
                        type inet:ip-address-no-zone;
                        description
                          "IPv4 address";
                      }
    
                      container inheritance-disable {
                        presence
                          "Indicates a inheritance-disable node is configured.";
                        description
                          "Prevent local address from being inherited from parent";
                      }  // container inheritance-disable
                    }  // container address
                  }  // container local
    
                  container log {
                    description
                      "Logging update messages per neighbor";
                    container message {
                      description
                        "Logging update/notification messages per neighbor";
                      container in {
                        description
                          "Inbound log messages";
                        leaf message-log-buffer-size {
                          type uint32 {
                            range "1..500";
                          }
                          description
                            "Range for message log buffer size";
                        }
    
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable inbound message logging";
                        }  // container disable
    
                        container inheritance-diable {
                          presence
                            "Indicates a inheritance-diable node is configured.";
                          description
                            "Prevents the msg log from being inherited from the parent";
                        }  // container inheritance-diable
                      }  // container in
    
                      container out {
                        description
                          "Outbound log messages";
                        leaf message-log-buffer-size {
                          type uint32 {
                            range "1..500";
                          }
                          description
                            "Range for message log buffer size";
                        }
    
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable outbound message logging";
                        }  // container disable
    
                        container inheritance-diable {
                          presence
                            "Indicates a inheritance-diable node is configured.";
                          description
                            "Prevents the msg log from being inherited from the parent";
                        }  // container inheritance-diable
                      }  // container out
                    }  // container message
                  }  // container log
    
                  leaf update-source {
                    type xr:Interface-name;
                    description
                      "Source of routing updates";
                  }
    
                  container local-address-subnet {
                    description
                      "Local address subnet of routing updates";
                    leaf ip-address {
                      type inet:ip-address-no-zone;
                      description
                        "IPv6 address and mask or masklength";
                    }
    
                    leaf mask-length {
                      type uint32 {
                        range "0..128";
                      }
                      description
                        "IP address and mask length";
                    }
                  }  // container local-address-subnet
    
                  container dmz-link-bandwidth {
                    presence
                      "Indicates a dmz-link-bandwidth node is configured.";
                    description
                      "Propagate the DMZ link bandwidth";
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent dmz-link-bandwidth from being inherited from the parent";
                    }  // container inheritance-disable
                  }  // container dmz-link-bandwidth
    
                  container ebgp-recv-extcommunity-dmz {
                    presence
                      "Indicates a ebgp-recv-extcommunity-dmz node is configured.";
                    description
                      "Receive extcommunity dmz link bandwidth from ebgp neighbor";
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent ebgp-send-community-dmz from being inherited from parent";
                    }  // container inheritance-disable
                  }  // container ebgp-recv-extcommunity-dmz
    
                  container ebgp-send-extcommunity-dmz {
                    must
                      "not(cumulative and inheritance-disable)";
                    presence
                      "Indicates a ebgp-send-extcommunity-dmz node is configured.";
                    description
                      "Send extended community dmz link bandwidth to ebgp neighbor";
                    container cumulative {
                      presence
                        "Indicates a cumulative node is configured.";
                      description
                        "Send cumulative community dmz link bandwidth of all multipaths to ebgp neighbor";
                    }  // container cumulative
    
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent ebgp-send-extcommunity-dmz from being inherited from parent";
                    }  // container inheritance-disable
                  }  // container ebgp-send-extcommunity-dmz
    
                  container ttl-security {
                    presence
                      "Indicates a ttl-security node is configured.";
                    description
                      "Enable EBGP TTL security";
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent ttl-security from being inherited from the parent";
                    }  // container inheritance-disable
                  }  // container ttl-security
    
                  container session-open-mode {
                    description
                      "Establish BGP session using this TCP open mode";
                    container active-only {
                      must
                        "not(../passive-only or ../both)";
                      presence
                        "Indicates a active-only node is configured.";
                      description "Active only";
                    }  // container active-only
    
                    container passive-only {
                      must
                        "not(../active-only or ../both)";
                      presence
                        "Indicates a passive-only node is configured.";
                      description "Passive only";
                    }  // container passive-only
    
                    container both {
                      must
                        "not(../active-only or ../passive-only)";
                      presence
                        "Indicates a both node is configured.";
                      description
                        "Prevent session-open-mode being inherited from the parent";
                    }  // container both
                  }  // container session-open-mode
    
                  leaf dscp {
                    type enumeration {
                      enum "default" {
                        value 0;
                        description
                          "Set packets with default dscp (000000)";
                      }
                      enum "cs1" {
                        value 8;
                        description
                          "Set packets with CS1(precedence 1) dscp (001000)";
                      }
                      enum "af11" {
                        value 10;
                        description
                          "Set packets with AF11 dscp (001010)";
                      }
                      enum "af12" {
                        value 12;
                        description
                          "Set packets with AF12 dscp (001100)";
                      }
                      enum "af13" {
                        value 14;
                        description
                          "Set packets with AF13 dscp (001110)";
                      }
                      enum "cs2" {
                        value 16;
                        description
                          "Set packets with CS2(precedence 2) dscp (010000)";
                      }
                      enum "af21" {
                        value 18;
                        description
                          "Set packets with AF21 dscp (010010)";
                      }
                      enum "af22" {
                        value 20;
                        description
                          "Set packets with AF22 dscp (010100)";
                      }
                      enum "af23" {
                        value 22;
                        description
                          "Set packets with AF23 dscp (010110)";
                      }
                      enum "cs3" {
                        value 24;
                        description
                          "Set packets with CS3(precedence 3) dscp (011000)";
                      }
                      enum "af31" {
                        value 26;
                        description
                          "Set packets with AF31 dscp (011010)";
                      }
                      enum "af32" {
                        value 28;
                        description
                          "Set packets with AF32 dscp (011100)";
                      }
                      enum "af33" {
                        value 30;
                        description
                          "Set packets with AF33 dscp (011110)";
                      }
                      enum "cs4" {
                        value 32;
                        description
                          "Set packets with CS4(precedence 4) dscp (100000)";
                      }
                      enum "af41" {
                        value 34;
                        description
                          "Set packets with AF41 dscp (100010)";
                      }
                      enum "af42" {
                        value 36;
                        description
                          "Set packets with AF42 dscp (100100)";
                      }
                      enum "af43" {
                        value 38;
                        description
                          "Set packets with AF43 dscp (100110)";
                      }
                      enum "cs5" {
                        value 40;
                        description
                          "Set packets with CS5(precedence 5) dscp (101000)";
                      }
                      enum "ef" {
                        value 46;
                        description
                          "Set packets with EF dscp (101110)";
                      }
                      enum "cs6" {
                        value 48;
                        description
                          "Set packets with CS6(precedence 6) dscp (110000)";
                      }
                      enum "cs7" {
                        value 56;
                        description
                          "Set packets with CS7(precedence 7) dscp (111000)";
                      }
                    }
                    description
                      "Set IP DSCP (DiffServ CodePoint)";
                  }
    
                  leaf precedence {
                    type enumeration {
                      enum "routine" {
                        value 0;
                        description
                          "Set packets with routine precedence (0)";
                      }
                      enum "priority" {
                        value 1;
                        description
                          "Set packets with priority precedence (1)";
                      }
                      enum "immediate" {
                        value 2;
                        description
                          "Set packets with immediate precedence (2)";
                      }
                      enum "flash" {
                        value 3;
                        description
                          "Set packets with flash precedence (3)";
                      }
                      enum "flash-override" {
                        value 4;
                        description
                          "Set packets with flash override precedence (4)";
                      }
                      enum "critical" {
                        value 5;
                        description
                          "Set packets with critical precedence (5)";
                      }
                      enum "internet" {
                        value 6;
                        description
                          "Set packets with internetwork control precedence (6)";
                      }
                      enum "network" {
                        value 7;
                        description
                          "Set packets with network control precedence (7)";
                      }
                    }
                    description "Set precedence";
                  }
    
                  container capability {
                    description
                      "Advertise capability to the peer";
                    container suppress {
                      description
                        "Suppress advertising capability to the peer ";
                      container four-byte-as {
                        presence
                          "Indicates a four-byte-as node is configured.";
                        description
                          "4-byte-as capability";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent capability suppress 4-type-as being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container four-byte-as
    
                      container all {
                        presence
                          "Indicates a all node is configured.";
                        description
                          "All capabilities";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Do not inherit this configuration from parent group";
                        }  // container inheritance-disable
                      }  // container all
    
                      container extended-nexthop-encoding {
                        presence
                          "Indicates a extended-nexthop-encoding node is configured.";
                        description
                          "Extended-nexthop-encoding capabilities (IETF RFC 5549)";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Do not inherit this configuration from parent group";
                        }  // container inheritance-disable
                      }  // container extended-nexthop-encoding
                    }  // container suppress
    
                    container additional-paths {
                      description
                        "Additional paths capability";
                      container send {
                        presence
                          "Indicates a send node is configured.";
                        description
                          "Additional paths Send capability";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Do not advertise additional paths Send capability";
                        }  // container disable
                      }  // container send
    
                      container receive {
                        presence
                          "Indicates a receive node is configured.";
                        description
                          "Additional paths Receive capability";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Do not advertise additional paths Receive capability";
                        }  // container disable
                      }  // container receive
                    }  // container additional-paths
                  }  // container capability
    
                  container graceful-restart {
                    presence
                      "Indicates a graceful-restart node is configured.";
                    description
                      "Enable graceful restart support for this neighbor";
                    container disable {
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Disable graceful restart support for this neighbor";
                    }  // container disable
    
                    leaf restart-time {
                      type uint32 {
                        range "1..4095";
                      }
                      description
                        "Restart time advertised to the neighbor";
                    }
    
                    leaf stalepath-time {
                      type uint32 {
                        range "1..4095";
                      }
                      description
                        "Maximum time to wait for restart of GR capable peer";
                    }
                  }  // container graceful-restart
    
                  container enforce-first-as {
                    presence
                      "Indicates a enforce-first-as node is configured.";
                    description
                      "Enforce the first AS for EBGP routes";
                    container disable {
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Do not enforce the first AS for EBGP routes";
                    }  // container disable
                  }  // container enforce-first-as
    
                  container cluster-id {
                    description
                      "Enter cluster id for this neighbor";
                    leaf route-reflector-cluster-id {
                      type uint32 {
                        range "1..4294967295";
                      }
                      description
                        "Route-Reflector Cluster-id as 32 bit quantity";
                    }
    
                    leaf ip-address {
                      type inet:ipv4-address-no-zone;
                      description
                        "Route-Reflector Cluster-id in IP address format";
                    }
                  }  // container cluster-id
    
                  leaf maximum-peers {
                    type uint32 {
                      range "1..4095";
                    }
                    description
                      "Maximum dynamic neighbors";
                  }
    
                  leaf idle-watch-time {
                    type uint32 {
                      range "30..1800";
                    }
                    description
                      "Maximum time to wait for deletion of IDLE state dynamic peer";
                  }
    
                  container egress-engineering {
                    presence
                      "Indicates a egress-engineering node is configured.";
                    description
                      "Enable egress peer engineering for this neighbor";
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Do not inherit egress-engineering from the parent";
                    }  // container inheritance-disable
                  }  // container egress-engineering
    
                  container peer-sets {
                    description
                      "Assign this neighbor to a peer-set used for egress peer engineering";
                    list peer-set {
                      key "peer-set-id";
                      description
                        "Assign this neighbor to a peer-set used for egress peer engineering";
                      leaf peer-set-id {
                        type uint32 {
                          range "1..255";
                        }
                        description
                          "Assign this neighbor to a peer-set used for egress peer engineering";
                      }
                    }  // list peer-set
                  }  // container peer-sets
    
                  container ao {
                    description
                      "Enable Authentiation Option";
                    leaf key-chain-name {
                      type string {
                        length "1..32";
                      }
                      must
                        "not(../inheritance-disable) and (../include-tcp-options/enable or ../include-tcp-options/disable)";
                      description
                        "Name of the key chain - maximum 32 characters";
                    }
    
                    container include-tcp-options {
                      description
                        "Include/Exclude other TCP options in the header";
                      container enable {
                        must
                          "not(../disable or ../../inheritance-disable)";
                        presence
                          "Indicates a enable node is configured.";
                        description
                          "Include other TCP options in the header";
                      }  // container enable
    
                      container disable {
                        must
                          "not(../enable or ../../inheritance-disable)";
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Exclude other TCP options in the header";
                      }  // container disable
    
                      container accept-ao-mismatch-connection {
                        must
                          "../enable or ../disable";
                        presence
                          "Indicates a accept-ao-mismatch-connection node is configured.";
                        description
                          "Accept new connection even if AO mismatched";
                      }  // container accept-ao-mismatch-connection
                    }  // container include-tcp-options
    
                    container inheritance-disable {
                      must
                        "not(../key-chain-name)";
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent keychain from being inherited from parent";
                    }  // container inheritance-disable
                  }  // container ao
                }  // list session-group
              }  // container session-groups
    
              container neighbor-groups {
                description
                  "Specify a Neighbor-group";
                list neighbor-group {
                  key "neighbor-group-name";
                  description
                    "Specify a Neighbor-group";
                  leaf neighbor-group-name {
                    type xr:Cisco-ios-xr-string {
                      length "1..900";
                    }
                    description
                      "Specify a Neighbor-group";
                  }
    
                  container address-families {
                    description
                      "Enter Address Family command mode";
                    list address-family {
                      key "af-name";
                      description
                        "Enter Address Family command mode";
                      leaf af-name {
                        type Bgp-address-family;
                        description
                          "Enter Address Family command mode";
                      }
    
                      container multipath {
                        presence
                          "Indicates a multipath node is configured.";
                        description
                          "Paths from this neighbor is eligible for multipath";
                      }  // container multipath
    
                      container use {
                        description
                          "Inherit configuration for this address-family from a group";
                        leaf af-group {
                          type string {
                            length "1..1024";
                          }
                          description
                            "Inherit configuration for this address-family from an af-group";
                        }
                      }  // container use
    
                      container capability {
                        description
                          "Advertise capability to the peer";
                        container orf {
                          description
                            "Advertise ORF capability to the peer";
                          container prefix {
                            description
                              "Advertise address prefix ORF capability to this neighbor";
                            container receive {
                              must
                                "not(../send or ../both or ../none)";
                              presence
                                "Indicates a receive node is configured.";
                              description
                                "Capability to RECEIVE the ORF from this neighbor";
                            }  // container receive
    
                            container send {
                              must
                                "not(../receive or ../both or ../none)";
                              presence
                                "Indicates a send node is configured.";
                              description
                                "Capability to SEND the ORF to this neighbor";
                            }  // container send
    
                            container both {
                              must
                                "not(../receive or ../send or ../none)";
                              presence
                                "Indicates a both node is configured.";
                              description
                                "Capability to RECEIVE and SEND the ORF from/to this neighbor";
                            }  // container both
    
                            container none {
                              must
                                "not(../receive or ../send or ../both)";
                              presence
                                "Indicates a none node is configured.";
                              description
                                "No capability to RECEIVE or SEND the ORF from/to this neighbor";
                            }  // container none
                          }  // container prefix
                        }  // container orf
                      }  // container capability
    
                      container default-originate {
                        presence
                          "Indicates a default-originate node is configured.";
                        description
                          "Originate default route to this neighbor";
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "Route policy to specify criteria to originate default";
                        }
    
                        container inheritance-disable {
                          must
                            "not(../route-policy)";
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent default-originate being inherited from a parent group";
                        }  // container inheritance-disable
                      }  // container default-originate
    
                      container maximum-prefix {
                        presence
                          "Indicates a maximum-prefix node is configured.";
                        description
                          "Maximum number of prefixes to accept from this peer";
                        leaf prefix-limit {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          mandatory true;
                          description
                            "Maximum number of prefixes to accept from this peer";
                        }
    
                        leaf threshold {
                          type uint32 {
                            range "1..100";
                          }
                          mandatory true;
                          description
                            "Threshold value (%) at which to generate a warning msg";
                        }
    
                        container warning-only {
                          presence
                            "Indicates a warning-only node is configured.";
                          description
                            "Only give warning message when limit is exceeded";
                        }  // container warning-only
    
                        leaf restart {
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "Restart time interval";
                        }
    
                        container discard-extra-paths {
                          presence
                            "Indicates a discard-extra-paths node is configured.";
                          description
                            "Discard extra paths when limit is exceeded";
                        }  // container discard-extra-paths
                      }  // container maximum-prefix
    
                      leaf optimal-route-reflection {
                        type string {
                          length "1..32";
                        }
                        description
                          "Configure optiomal-route-reflection for this neighbor";
                      }
    
                      container next-hop-self {
                        presence
                          "Indicates a next-hop-self node is configured.";
                        description
                          "Disable the next hop calculation for this neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent next-hop-self from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container next-hop-self
    
                      container next-hop-unchanged {
                        presence
                          "Indicates a next-hop-unchanged node is configured.";
                        description
                          "Do not overwrite next hop before advertising to eBGP peers";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent next-hop-unchanged from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container next-hop-unchanged
    
                      container next-hop-unchanged-multipath {
                        presence
                          "Indicates a next-hop-unchanged-multipath node is configured.";
                        description
                          "Do not overwrite nexthop before advertising multipaths";
                      }  // container next-hop-unchanged-multipath
    
                      container slow-peer {
                        description
                          "configuration commands for slow-peer";
                        container detection {
                          description
                            "Enable or disable slow peer detection.";
                          container enable {
                            must
                              "not(../disable) and
    (../split-update-group/static or
     ../split-update-group/dynamic)";
                            presence
                              "Indicates a enable node is configured.";
                            description
                              "Enable slow peer detection";
                          }  // container enable
    
                          container disable {
                            must
                              "not(../enable) and
    (../split-update-group/static or
     ../split-update-group/dynamic)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable slow peer detection";
                          }  // container disable
    
                          container split-update-group {
                            description
                              "Options to split update group";
                            container static {
                              must
                                "not(../dynamic) and (../../enable or ../../disable)";
                              presence
                                "Indicates a static node is configured.";
                              description
                                "Manually move this peer to slow update group";
                            }  // container static
    
                            container dynamic {
                              must
                                "not(../static) and (../../enable or ../../disable)";
                              presence
                                "Indicates a dynamic node is configured.";
                              description
                                "Move peer to slow update group on detection";
                              container permanent {
                                must
                                  "not(../disable)";
                                presence
                                  "Indicates a permanent node is configured.";
                                description
                                  "Do not revert back peer on recovery";
                              }  // container permanent
    
                              container disable {
                                must
                                  "not(../permanent)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable moving slow peer to updgrp";
                              }  // container disable
                            }  // container dynamic
                          }  // container split-update-group
                        }  // container detection
                      }  // container slow-peer
    
                      container origin-as {
                        description
                          "BGP origin-AS knobs";
                        container validation {
                          description
                            "BGP origin-AS validation knobs";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable RPKI origin-AS validation";
                          }  // container disable
                        }  // container validation
                      }  // container origin-as
    
                      container bestpath {
                        description
                          "Change default route selection criteria";
                        container origin-as {
                          description
                            "BGP origin-AS knobs";
                          container allow {
                            description
                              "BGP origin-AS knobs";
                            container invalid {
                              presence
                                "Indicates a invalid node is configured.";
                              description
                                "BGP bestpath selection will allow 'invalid' origin-AS";
                            }  // container invalid
                          }  // container allow
                        }  // container origin-as
                      }  // container bestpath
    
                      container route-policy {
                        description
                          "Apply route policy to neighbor";
                        leaf in {
                          type xr:Route-policy-name;
                          description
                            "Apply route policy to inbound routes";
                        }
    
                        leaf out {
                          type xr:Route-policy-name;
                          description
                            "Apply route policy to outbound routes";
                        }
                      }  // container route-policy
    
                      container orf {
                        description
                          "Specify ORF and inbound filtering criteria";
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "Route policy to specify ORF and inbound filter";
                        }
                      }  // container orf
    
                      container remove-private-as {
                        presence
                          "Indicates a remove-private-as node is configured.";
                        description
                          "Remove private AS number from outbound updates";
                        container entire-aspath {
                          must
                            "not(../inheritance-disable or ../internal)";
                          presence
                            "Indicates a entire-aspath node is configured.";
                          description
                            "remove only if all ASes in the path are private";
                        }  // container entire-aspath
    
                        container inheritance-disable {
                          must
                            "not(../entire-aspath or ../internal)";
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent remove-private-AS from being inherited from the parent";
                        }  // container inheritance-disable
    
                        container internal {
                          must
                            "not(../entire-aspath or ../inheritance-disable)";
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "remove only if all ASes in the path are private";
                          container inheritance-disable {
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent remove-private-AS from being inherited from the parent";
                          }  // container inheritance-disable
                        }  // container internal
                      }  // container remove-private-as
    
                      container remove-private-as-inbound {
                        must
                          "not(entire-aspath and inheritance-disable)";
                        presence
                          "Indicates a inbound node is configured.";
                        description
                          "Remove private AS number from inbound updates";
                        container entire-aspath {
                          presence
                            "Indicates a entire-aspath node is configured.";
                          description
                            "remove only if all ASes in the path are private";
                        }  // container entire-aspath
    
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent remove-private-AS from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container remove-private-as-inbound
    
                      container enforce-multiple-labels {
                        presence
                          "Indicates a enforce-multiple-labels node is configured.";
                        description
                          "Enforce support for multiple labels (requires manual session flap)";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent enforce-multiple-labels from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container enforce-multiple-labels
    
                      container route-reflector-client {
                        presence
                          "Indicates a route-reflector-client node is configured.";
                        description
                          "Configure a neighbor as Route Reflector client";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent route-reflector-client from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container route-reflector-client
    
                      container accept-route-legacy-rt {
                        presence
                          "Indicates a accept-route-legacy-rt node is configured.";
                        description
                          "Configure a neighbor to support legacy PE for RT-Constraint AF";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent  accept-route-legacy-RT from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container accept-route-legacy-rt
    
                      container send-community-ebgp {
                        presence
                          "Indicates a send-community-ebgp node is configured.";
                        description
                          "Send community attribute to this external neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent send-community-ebgp from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container send-community-ebgp
    
                      container send-community-gshut-ebgp {
                        presence
                          "Indicates a send-community-gshut-ebgp node is configured.";
                        description
                          "Allow the g-shut community to be sent to this external neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent send-community-gshut-ebgp from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container send-community-gshut-ebgp
    
                      container send-extended-community-ebgp {
                        presence
                          "Indicates a send-extended-community-ebgp node is configured.";
                        description
                          "Send extended community attribute to this external neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent send-extended-community-ebgp from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container send-extended-community-ebgp
    
                      container soft-reconfiguration {
                        description
                          "Per neighbor soft reconfiguration";
                        container inbound {
                          presence
                            "Indicates a inbound node is configured.";
                          description
                            "Allow inbound soft reconfiguration for this neighbor";
                          container rpki-dropped-only {
                            must
                              "not(../rpki-tested-only or ../always or ../inheritance-disable)";
                            presence
                              "Indicates a rpki-dropped-only node is configured.";
                            description
                              "Use soft-reconfig, for paths dropped by route-policy which have RPKI validity state check";
                          }  // container rpki-dropped-only
    
                          container rpki-tested-only {
                            must
                              "not(../rpki-dropped-only or ../always or ../inheritance-disable)";
                            presence
                              "Indicates a rpki-tested-only node is configured.";
                            description
                              "Use soft-reconfig for paths tested or dropped by route-policy which have RPKI validity state check";
                          }  // container rpki-tested-only
    
                          container always {
                            must
                              "not(../rpki-dropped-only or ../rpki-tested-only or ../inheritance-disable)";
                            presence
                              "Indicates a always node is configured.";
                            description
                              "Always use soft reconfig, even if route refresh is supported";
                          }  // container always
    
                          container inheritance-disable {
                            must
                              "not(../rpki-dropped-only or ../rpki-tested-only or ../always)";
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent soft-reconfiguration from being inherited from the parent";
                          }  // container inheritance-disable
                        }  // container inbound
                      }  // container soft-reconfiguration
    
                      container update {
                        description
                          "BGP out bound message";
                        container out {
                          description
                            "BGP out bound message handling";
                          container originator-loopcheck {
                            presence
                              "Indicates a originator-loopcheck node is configured.";
                            description
                              "Loop check for same originator which sent the route";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable originator loop check";
                            }  // container disable
                          }  // container originator-loopcheck
                        }  // container out
                      }  // container update
    
                      container advertise {
                        description
                          "Per neighbor advertisement options";
                        container permanent-network {
                          when
                            "../../af-name != 'vpnv4-unicast' and
    ../../af-name != 'vpnv4-multicast' and
    ../../af-name != 'vpnv4-flowspec' and
    ../../af-name != 'vpnv6-flowspec' and
    ../../af-name != 'vpnv6-multicast' and
    ../../af-name != 'vpnv6-unicast' and
    ../../af-name != 'l2vpn-evpn' and
    ../../af-name != 'l2vpn-mspw' and
    ../../af-name != 'l2vpn-vpls-vpws'";
                          presence
                            "Indicates a permanent-network node is configured.";
                          description
                            "Allow permanent networks for this neighbor";
                        }  // container permanent-network
    
                        container local-labeled-route {
                          when
                            "../../af-name != 'vpnv4-unicast' and
    ../../af-name != 'vpnv4-multicast' and
    ../../af-name != 'vpnv4-flowspec' and
    ../../af-name != 'vpnv6-flowspec' and
    ../../af-name != 'vpnv6-multicast' and
    ../../af-name != 'vpnv6-unicast' and
    ../../af-name != 'l2vpn-evpn' and
    ../../af-name != 'l2vpn-mspw' and
    ../../af-name != 'l2vpn-vpls-vpws'";
                          presence
                            "Indicates a local-labeled-route node is configured.";
                          description
                            "Advertisement of routes with local-label";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Do not advertise routes with local-label via Unicast SAFI";
                          }  // container disable
                        }  // container local-labeled-route
    
                        container vpnv4 {
                          when
                            "../../af-name = 'vpnv4-unicast' or
    ../../af-name = 'vpnv6-unicast' or
    ../../af-name = 'l2vpn-evpn'";
                          description
                            "VPNv4 Address Family";
                          container unicast {
                            description
                              "Address Family modifier";
                            container enable {
                              presence
                                "Indicates an enable node is configured.";
                              description
                                "Enable advertise vpn4 unicast";
                              container re-originated {
                                presence
                                  "Indicates a re-originated node is configured.";
                                description
                                  "Advertise re-orignated and local routes only";
                                container stitching-rt {
                                  presence
                                    "Indicates a stitching-rt node is configured.";
                                  description
                                    "Advertise re-originated and local routes with stitching Route-Targets";
                                }  // container stitching-rt
                              }  // container re-originated
                            }  // container enable
    
                            container imported-from-default-vrf {
                              description
                                "Default VRF imported routes";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable advertisement of default VRF imported routes";
                              }  // container disable
                            }  // container imported-from-default-vrf
    
                            container imported-from-vrf {
                              description
                                "VRF extranet imported routes";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable advertisement of VRF extranet imported routes";
                              }  // container disable
                            }  // container imported-from-vrf
    
                            container imported-from-bridgedomain {
                              description
                                "VRF EVPN extranet imported routes ";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable advertisement of VRF EVPN extranet imported routes";
                              }  // container disable
                            }  // container imported-from-bridgedomain
                          }  // container unicast
                        }  // container vpnv4
    
                        container vpnv6 {
                          when
                            "../../af-name = 'vpnv4-unicast' or
    ../../af-name = 'vpnv6-unicast' or
    ../../af-name = 'l2vpn-evpn'";
                          description
                            "VPNv6 Address Family";
                          container unicast {
                            description
                              "Address Family modifier";
                            container enable {
                              presence
                                "Indicates an enable node is configured.";
                              description
                                "Enable advertise vpnv6 unicast";
                              container re-originated {
                                presence
                                  "Indicates a re-originated node is configured.";
                                description
                                  "Advertise Re-orignated routes only";
                                container stitching-rt {
                                  presence
                                    "Indicates a stitching-rt node is configured.";
                                  description
                                    "Advertise re-originated routes with stitching Route-Targets";
                                }  // container stitching-rt
                              }  // container re-originated
                            }  // container enable
    
                            container imported-from-default-vrf {
                              description
                                "Default VRF imported routes";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable advertisement of default VRF imported routes";
                              }  // container disable
                            }  // container imported-from-default-vrf
    
                            container imported-from-vrf {
                              description
                                "VRF extranet imported routes";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable advertisement of VRF extranet imported routes";
                              }  // container disable
                            }  // container imported-from-vrf
    
                            container imported-from-bridgedomain {
                              description
                                "VRF EVPN extranet imported routes";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable advertisement of VRF EVPN extranet imported routes";
                              }  // container disable
                            }  // container imported-from-bridgedomain
                          }  // container unicast
                        }  // container vpnv6
    
                        container l2vpn {
                          when
                            "../../af-name = 'vpnv4-unicast' or
    ../../af-name = 'vpnv6-unicast' or
    ../../af-name = 'l2vpn-evpn'";
                          description
                            "L2VPN Address Family";
                          container evpn {
                            when
                              "../../../af-name = 'l2vpn-evpn'";
                            presence
                              "Indicates a evpn node is configured.";
                            description
                              "Address Family modifier";
                            container re-originated {
                              presence
                                "Indicates a re-originated node is configured.";
                              description
                                "Advertise Re-orignated routes only";
                              container stitching-rt {
                                presence
                                  "Indicates a stitching-rt node is configured.";
                                description
                                  "Advertise re-originated routes with stitching Route-Targets";
                              }  // container stitching-rt
                            }  // container re-originated
                          }  // container evpn
    
                          container evpn-disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable Advertisement of selected SAFI";
                          }  // container evpn-disable
    
                          container vpls-vpws {
                            description
                              "Address Family modifier";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable Advertisement of selected SAFI";
                            }  // container disable
                          }  // container vpls-vpws
    
                          container mspw {
                            description
                              "Address Family modifier";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable Advertisement of selected SAFI";
                            }  // container disable
                          }  // container mspw
                        }  // container l2vpn
                      }  // container advertise
    
                      container encapsulation-type {
                        when
                          "../af-name = 'ipv4-unicast' or
    ../af-name = 'ipv6-unicast' or
    ../af-name = 'vpnv4-unicast' or
    ../af-name = 'vpnv6-unicast' or
    ../af-name = 'l2vpn-evpn'";
                        description
                          "Specify encapsulation type";
                        container vxlan {
                          when
                            "../../af-name = 'vpnv4-unicast' or
    ../../af-name = 'vpnv6-unicast' or
    ../../af-name = 'l2vpn-evpn'";
                          must "not(../srv6)";
                          presence
                            "Indicates a vxlan node is configured.";
                          description
                            "VxLAN encapsulation";
                        }  // container vxlan
    
                        container srv6 {
                          when
                            "../../af-name != 'l2vpn-evpn'";
                          must "not(../vxlan)";
                          presence
                            "Indicates a srv6 node is configured.";
                          description
                            "SRv6 encapsulation";
                        }  // container srv6
                      }  // container encapsulation-type
    
                      container segment-routing {
                        when
                          "../af-name = 'vpnv4-unicast'";
                        description
                          "enable segment-routing srv6 version 4";
                        container srv6 {
                          description
                            "srv6 version 4";
                          container prefix-sid-type4 {
                            presence
                              "Indicates a prefix-sid-type4 node is configured.";
                            description
                              "Enable prefix sid version 4 encoding";
                          }  // container prefix-sid-type4
                        }  // container srv6
                      }  // container segment-routing
    
                      container import {
                        description
                          "Import options for neighbor address-family routes";
                        container stitching-rt {
                          presence
                            "Indicates a stitching-rt node is configured.";
                          description
                            "Import routes using stitching RTs";
                          container re-originate {
                            presence
                              "Indicates a re-originate node is configured.";
                            description
                              "Re-originate imported routes";
                            container stitching-rt {
                              presence
                                "Indicates a stitching-rt node is configured.";
                              description
                                "Reoriginate imported routes by attaching stitching RTs";
                            }  // container stitching-rt
                          }  // container re-originate
                        }  // container stitching-rt
                      }  // container import
    
                      leaf weight {
                        type uint32 {
                          range "0..65535";
                        }
                        description
                          "Set default weight for routes from this neighbor";
                      }
    
                      container allowas-in {
                        presence
                          "Indicates a allowas-in node is configured.";
                        description
                          "Allow as-path with my AS present in it";
                        leaf number-of-occurences {
                          type uint32 {
                            range "1..10";
                          }
                          description
                            "Number of occurences of AS number";
                        }
                      }  // container allowas-in
    
                      container long-lived-graceful-restart {
                        description
                          "Enable long lived graceful restart support";
                        container stale-time {
                          description
                            "Maximum time to wait before purging long-lived stale routes";
                          leaf send {
                            type uint32 {
                              range
                                "0..16777215";
                            }
                            description
                              "Stale-time sent in LLGR Capability";
                          }
    
                          leaf accept {
                            type uint32 {
                              range
                                "0..16777215";
                            }
                            description
                              "Maximum stale-time acceptable from neighbor";
                          }
                        }  // container stale-time
    
                        container capable {
                          presence
                            "Indicates a capable node is configured.";
                          description
                            "Treat neighbor as LLGR capable";
                        }  // container capable
                      }  // container long-lived-graceful-restart
    
                      container as-override {
                        presence
                          "Indicates a as-override node is configured.";
                        description
                          "Override matching AS-number while sending update";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent as-override from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container as-override
    
                      container aigp {
                        presence
                          "Indicates a aigp node is configured.";
                        description
                          "Enable AIGP for this neighbor ";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable AIGP";
                        }  // container disable
                      }  // container aigp
    
                      container aigp-send {
                        description "Copy AIGP";
                        container cost-community {
                          must
                            "(cost-community-id and poi) or disable";
                          presence
                            "Indicates a cost-community node is configured.";
                          description
                            "Send AIGP value in Cost Community";
                          leaf cost-community-id {
                            type uint32 {
                              range "0..255";
                            }
                            must
                              "not(../disable)";
                            description
                              "Cost community ID";
                          }
    
                          container poi {
                            must
                              "(igp-cost or pre-bestpath) and not(igp-cost and pre-bestpath)";
                            presence
                              "Indicates a poi node is configured.";
                            description
                              "Point of insertion for bestpath calculation";
                            container igp-cost {
                              presence
                                "Indicates a igp-cost node is configured.";
                              description
                                "Cost community is used after IGP distance to next hop";
                              container transitive {
                                presence
                                  "Indicates a transitive node is configured.";
                                description
                                  "Enable transitive cost community";
                              }  // container transitive
                            }  // container igp-cost
    
                            container pre-bestpath {
                              presence
                                "Indicates a pre-bestpath node is configured.";
                              description
                                "Cost community is first step in best path calculation";
                              container transitive {
                                presence
                                  "Indicates a transitive node is configured.";
                                description
                                  "Enable transitive cost community";
                              }  // container transitive
                            }  // container pre-bestpath
                          }  // container poi
    
                          container disable {
                            must
                              "not(../cost-community-id)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable aigp send cost-community";
                          }  // container disable
                        }  // container cost-community
    
                        container med {
                          presence
                            "Indicates a med node is configured.";
                          description
                            "Send AIGP value in MED";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable aigp send med";
                          }  // container disable
                        }  // container med
                      }  // container aigp-send
    
                      container validation {
                        when
                          "../af-name = 'ipv4-flowspec' or ../af-name = 'ipv6-flowspec'";
                        presence
                          "Indicates a validation node is configured.";
                        description
                          "Flowspec Validation for this neighbor ";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable Flowspec Validation";
                        }  // container disable
    
                        container redirect {
                          description
                            "Flowspec Redirect nexthop Validation";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable Flowspec Redirect nexthop Validation";
                          }  // container disable
                        }  // container redirect
                      }  // container validation
    
                      container send-multicast-attributes {
                        when
                          "../af-name = 'ipv4-unicast' or ../af-name = 'ipv6-unicast' or ../af-name = 'ipv4-labeled-unicast' or ../af-name = 'ipv6-labeled-unicast' or ../af-name = 'ipv4-multicast' or ../af-name = 'ipv6-multicast' or ../af-name = 'ipv4-mvpn' or ../af-name = 'ipv6-mvpn'";
                        presence
                          "Indicates a send-multicast-attributes node is configured.";
                        description
                          "Send multicast attributes to this neighbor ";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable send multicast attribute";
                        }  // container disable
                      }  // container send-multicast-attributes
    
                      container signalling {
                        description
                          "Signalling protocols to disable, BGP or LDP";
                        container bgp {
                          description
                            "Select BGP to disable";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable Signalling type";
                          }  // container disable
                        }  // container bgp
    
                        container ldp {
                          description
                            "Select LDP to disable";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable Signalling type";
                          }  // container disable
                        }  // container ldp
                      }  // container signalling
    
                      container accept-own {
                        presence
                          "Indicates a accept-own node is configured.";
                        description
                          "Handle self-originated routes with Accept-Own community";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent item being inherited from a parent group";
                        }  // container inheritance-disable
                      }  // container accept-own
    
                      container cluster-id {
                        description
                          "Allow routes with first cluster-id in list is same as the router's cluster id";
                        container allow-equal {
                          presence
                            "Indicates a allow-equal node is configured.";
                          description
                            "Accept routes with first cluster-id in list is same as the router's cluster id";
                          container disable {
                            presence
                              "Indicates a allow-equal node is configured.";
                            description
                              "Prevent the configuration from being inherited.";
                          }  // container disable
                        }  // container allow-equal
                      }  // container cluster-id
    
                      container site-of-origin {
                        description
                          "Site-of-Origin extended community associated with the neighbor";
                        container two-byte-as {
                          must
                            "not(../four-byte-as or ../ip-address)";
                          presence
                            "Indicates a two-byte-as node is configured.";
                          leaf as-number {
                            type xr:Bgp-as-number;
                            mandatory true;
                            description
                              "bgp as-number";
                          }
    
                          leaf index {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            mandatory true;
                            description
                              "ASN2:index (hex or decimal format)";
                          }
                        }  // container two-byte-as
    
                        container four-byte-as {
                          must
                            "not(../two-byte-as or ../ip-address)";
                          presence
                            "Indicates a four-byte-as node is configured.";
                          leaf as-number {
                            type xr:Bgp-as-number;
                            mandatory true;
                            description
                              "4-byte AS number";
                          }
    
                          leaf index {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            mandatory true;
                            description
                              "ASN2:index (hex or decimal format)";
                          }
                        }  // container four-byte-as
    
                        container ip-address {
                          must
                            "not(../two-byte-as or ../four-byte-as)";
                          presence
                            "Indicates a ip-address node is configured.";
                          description
                            "configure this node";
                          leaf ipv4-address {
                            type inet:ipv4-address-no-zone;
                            mandatory true;
                            description
                              "configure this node";
                          }
    
                          leaf index {
                            type uint32 {
                              range "0..65535";
                            }
                            mandatory true;
                            description
                              "IPv4Address:index (hex or decimal format)";
                          }
                        }  // container ip-address
                      }  // container site-of-origin
                    }  // list address-family
                  }  // container address-families
    
                  container graceful-maintenance {
                    presence
                      "Indicates a graceful-maintenance node is configured.";
                    description
                      "BGP Graceful Maintenance mode configuration.";
                    container local-preference {
                      must
                        "local-preference-value or inheritance-disable";
                      presence
                        "Indicates a local-preference node is configured.";
                      description
                        "local preference with which to advertise routes to ibgps. Default=No Touch";
                      leaf local-preference-value {
                        type uint32 {
                          range "0..4294967295";
                        }
                        description
                          "Range of values for Local Preference";
                      }
    
                      container inheritance-disable {
                        presence
                          "Indicates a inheritance-disable node is configured.";
                        description
                          "Prevent local preference from being inherited from the parent";
                      }  // container inheritance-disable
                    }  // container local-preference
    
                    container as-prepends {
                      must
                        "number-of-as-prepends or inheritance-disable";
                      presence
                        "Indicates a as-prepends node is configured.";
                      description
                        "Number of times to prepend the local AS number to the AS poutes. Default=0";
                      leaf number-of-as-prepends {
                        type uint32 {
                          range "0..6";
                        }
                        description
                          "Range of number of AS prepends";
                      }
    
                      container inheritance-disable {
                        presence
                          "Indicates a inheritance-disable node is configured.";
                        description
                          "Prevent AS prepends from being inherited from the parent";
                      }  // container inheritance-disable
                    }  // container as-prepends
    
                    container activate {
                      presence
                        "Indicates a activate node is configured.";
                      description
                        "Routes will be announced with the graceful maintenance
    attrhile activated either here or under router
    bgp ation. While activated, all routes to this
    neigl be announced with the attributes
    confere and all routes from this neighbor will
    be a to other neighbors with the graceful
    mainattributes configured under those
    neighe g-shut community will be announced
    regaf the other attributes configured here. To
    alloshut community to be announced to ebgp
    neighe send-community-gshut-ebgp configuration
    is aired. Note: changes to the attributes will
    not ect while activated.";
                      container inheritance-disable {
                        presence
                          "Indicates a inheritance-disable node is configured.";
                        description
                          "Prevent activate from being inherited from the parent";
                      }  // container inheritance-disable
                    }  // container activate
                  }  // container graceful-maintenance
    
                  container update {
                    description
                      "BGP Update configuration";
                    container in {
                      description
                        "Inbound update message handling";
                      container filtering {
                        presence
                          "Indicates a filtering node is configured.";
                        description
                          "Inbound update message filtering";
                        container message {
                          description
                            "Filtered update messages";
                          leaf buffers {
                            type uint32 {
                              range "0..25";
                            }
                            must
                              "not(../non-circular)";
                            description
                              "Filtered update message buffers";
                          }
    
                          container non-circular {
                            must
                              "not(../buffers)";
                            presence
                              "Indicates a non-circular node is configured.";
                            description
                              "Message buffer list is not circular";
                          }  // container non-circular
                        }  // container message
    
                        container logging {
                          description
                            "Update filtering syslog message";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable update filtering syslog message";
                          }  // container disable
                        }  // container logging
    
                        container attribute-filter {
                          description
                            "Attribute-filter configuration";
                          leaf group {
                            type xr:Cisco-ios-xr-string {
                              length "1..1024";
                            }
                            description
                              "Attribute-filter group configuration";
                          }
                        }  // container attribute-filter
                      }  // container filtering
                    }  // container in
                  }  // container update
    
                  leaf remote-as {
                    type xr:Bgp-as-number;
                    description "bgp as-number";
                  }
    
                  leaf remote-as-list {
                    type string {
                      length "1..1024";
                    }
                    description
                      "Remote as-list configuration";
                  }
    
                  container use {
                    description
                      "Inherit configuration from a group";
                    leaf session-group {
                      type string {
                        length "1..1024";
                      }
                      description
                        "Inherit address-family independent config from a session-group";
                    }
    
                    leaf neighbor-group {
                      type string {
                        length "1..1024";
                      }
                      description
                        "Inherit configuration from a neighbor-group";
                    }
                  }  // container use
    
                  container advertisement-interval {
                    presence
                      "Indicates a advertisement-interval node is configured.";
                    description
                      "Minimum interval between sending BGP routing updates";
                    leaf time-in-seconds {
                      type uint32 {
                        range "0..600";
                      }
                      mandatory true;
                      description
                        "Minimum interval between sending BGP routing updates";
                    }
    
                    leaf time-in-milliseconds {
                      type uint32 {
                        range "0..999";
                      }
                      description
                        "time in milliseconds";
                    }
                  }  // container advertisement-interval
    
                  leaf description {
                    type string {
                      length "1..1024";
                    }
                    description
                      "Neighbor specific description";
                  }
    
                  container ignore-connected-check {
                    presence
                      "Indicates a ignore-connected-check node is configured.";
                    description
                      "Bypass the directly connected nexthop check for single-hop eBGP peering";
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent ignore-connected-check from being inherited from the parent";
                    }  // container inheritance-disable
                  }  // container ignore-connected-check
    
                  container internal-vpn-client {
                    presence
                      "Indicates a internal-vpn-client node is configured.";
                    description
                      "Preserve iBGP CE neighbor path in ATTR_SET across VPN core";
                  }  // container internal-vpn-client
    
                  container ebgp-multihop {
                    presence
                      "Indicates a ebgp-multihop node is configured.";
                    description
                      "Allow EBGP neighbors not on directly connected networks";
                    leaf maximum-hop-count {
                      type uint32 {
                        range "1..255";
                      }
                      mandatory true;
                      description
                        "maximum hop count";
                    }
    
                    container mpls {
                      presence
                        "Indicates a mpls node is configured.";
                      description
                        "Disable BGP MPLS forwarding";
                    }  // container mpls
                  }  // container ebgp-multihop
    
                  container tcp {
                    description
                      "TCP session configuration commands";
                    container mss {
                      must
                        "initial-mss or inheritance-disable";
                      presence
                        "Indicates a mss node is configured.";
                      description
                        "Maximum Segment Size";
                      leaf initial-mss {
                        type uint32 {
                          range "68..10000";
                        }
                        description
                          "TCP initial maximum segment size";
                      }
    
                      container inheritance-disable {
                        presence
                          "Indicates a inheritance-disable node is configured.";
                        description
                          "Prevent tcp mss from being inherited from the parent";
                      }  // container inheritance-disable
                    }  // container mss
                  }  // container tcp
    
                  container bmp-activate {
                    description
                      "Enable BMP logging for this neighbor";
                    container servers {
                      description
                        "Enable BMP connection to particular server";
                      list server {
                        key "server-id";
                        description
                          "Enable BMP connection to particular server";
                        leaf server-id {
                          type uint32 {
                            range "1..8";
                          }
                          description
                            "Enable BMP connection to particular server";
                        }
                      }  // list server
                    }  // container servers
                  }  // container bmp-activate
    
                  container bfd {
                    description
                      "Configure BFD parameters";
                    container fast-detect {
                      must
                        "not(strict-mode and inheritance-disable)";
                      presence
                        "Indicates a fast-detect node is configured.";
                      description
                        "Enable Fast detection";
                      container strict-mode {
                        presence
                          "Indicates a strict-mode node is configured.";
                        description
                          "Hold down neighbor session until BFD session is up";
                      }  // container strict-mode
    
                      container inheritance-disable {
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Prevent bfd settings from being inherited from the parent";
                      }  // container inheritance-disable
                    }  // container fast-detect
    
                    leaf minimum-interval {
                      type uint32 {
                        range "3..30000";
                      }
                      description
                        "Hello interval";
                    }
    
                    leaf multiplier {
                      type uint32 {
                        range "2..16";
                      }
                      description
                        "Detect multiplier";
                    }
                  }  // container bfd
    
                  container keychain {
                    must
                      "name or inheritance-disable";
                    presence
                      "Indicates a keychain node is configured.";
                    description
                      "Set keychain based authentication";
                    leaf name {
                      type string {
                        length "1..32";
                      }
                      description
                        "Name of the key chain - maximum 32 characters";
                    }
    
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent keychain from being inherited from parent";
                    }  // container inheritance-disable
                  }  // container keychain
    
                  container local-as {
                    must
                      "as-number or inheritance-disable";
                    presence
                      "Indicates a local-as node is configured.";
                    description
                      "Specify local AS number";
                    leaf as-number {
                      type xr:Bgp-as-number;
                      description
                        "bgp as-number";
                    }
    
                    container no-prepend {
                      presence
                        "Indicates a no-prepend node is configured.";
                      description
                        "Do not prepend local AS to announcements from this neighbor";
                      container replace-as {
                        presence
                          "Indicates a replace-as node is configured.";
                        description
                          "Prepend only local AS to announcements to this neighbor";
                        container dual-as {
                          presence
                            "Indicates a dual-as node is configured.";
                          description
                            "Dual-AS mode";
                        }  // container dual-as
                      }  // container replace-as
                    }  // container no-prepend
    
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent local AS from being inherited from parent";
                    }  // container inheritance-disable
                  }  // container local-as
    
                  container password {
                    must
                      "encrypted or inheritance-disable";
                    presence
                      "Indicates a password node is configured.";
                    description "Set a password";
                    leaf encrypted {
                      type xr:Proprietary-password;
                      description
                        "Specifies an ENCRYPTED password will follow";
                    }
    
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent password from being inherited from parent";
                    }  // container inheritance-disable
                  }  // container password
    
                  container receive-buffer-size {
                    presence
                      "Indicates a receive-buffer-size node is configured.";
                    description
                      "Set socket and BGP receive buffer size";
                    leaf receive-socket-buffer-size {
                      type uint32 {
                        range "512..131072";
                      }
                      mandatory true;
                      description
                        "Set socket and BGP receive buffer size";
                    }
    
                    leaf bgp-read-buffer-size {
                      type uint32 {
                        range "512..131072";
                      }
                      description
                        "BGP Read buffer size in bytes";
                    }
                  }  // container receive-buffer-size
    
                  container send-buffer-size {
                    presence
                      "Indicates a send-buffer-size node is configured.";
                    description
                      "Set socket and BGP send buffer size";
                    leaf send-socket-buffer-size {
                      type uint32 {
                        range "4096..131072";
                      }
                      mandatory true;
                      description
                        "Set socket and BGP send buffer size";
                    }
    
                    leaf bgp-write-buffer-size {
                      type uint32 {
                        range "4096..131072";
                      }
                      description
                        "BGP Write buffer size in bytes";
                    }
                  }  // container send-buffer-size
    
                  container shutdown {
                    presence
                      "Indicates a shutdown node is configured.";
                    description
                      "Administratively shut down this neighbor";
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent this neighbor being shutdown, even if its parent is";
                    }  // container inheritance-disable
                  }  // container shutdown
    
                  container timers {
                    presence
                      "Indicates a timers node is configured.";
                    description
                      "BGP per neighbor timers";
                    leaf keepalive-interval {
                      type uint32 {
                        range "0..65535";
                      }
                      mandatory true;
                      description "BGP timers";
                    }
    
                    leaf holdtime {
                      type union {
                        type uint32 {
                          range "0";
                        }
                        type uint32 {
                          range "3..65535";
                        }
                      }
                      mandatory true;
                      description
                        "Holdtime. Set 0 to disable keepalives/hold time.";
                    }
    
                    leaf minimum-acceptable-holdtime {
                      type union {
                        type uint32 {
                          range "0";
                        }
                        type uint32 {
                          range "3..65535";
                        }
                      }
                      description
                        "Minimum acceptable holdtime from neighbor. Set 0 to disable keepalives/hold time.";
                    }
                  }  // container timers
    
                  container local {
                    description
                      "Configure local parameter";
                    container address {
                      must
                        "ip-address or inheritance-disable";
                      presence
                        "Indicates a address node is configured.";
                      description
                        "use configured local address for bgp peering";
                      leaf ip-address {
                        type inet:ip-address-no-zone;
                        description
                          "IPv4 address";
                      }
    
                      container inheritance-disable {
                        presence
                          "Indicates a inheritance-disable node is configured.";
                        description
                          "Prevent local address from being inherited from parent";
                      }  // container inheritance-disable
                    }  // container address
                  }  // container local
    
                  container log {
                    description
                      "Logging update messages per neighbor";
                    container message {
                      description
                        "Logging update/notification messages per neighbor";
                      container in {
                        description
                          "Inbound log messages";
                        leaf message-log-buffer-size {
                          type uint32 {
                            range "1..500";
                          }
                          description
                            "Range for message log buffer size";
                        }
    
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable inbound message logging";
                        }  // container disable
    
                        container inheritance-diable {
                          presence
                            "Indicates a inheritance-diable node is configured.";
                          description
                            "Prevents the msg log from being inherited from the parent";
                        }  // container inheritance-diable
                      }  // container in
    
                      container out {
                        description
                          "Outbound log messages";
                        leaf message-log-buffer-size {
                          type uint32 {
                            range "1..500";
                          }
                          description
                            "Range for message log buffer size";
                        }
    
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable outbound message logging";
                        }  // container disable
    
                        container inheritance-diable {
                          presence
                            "Indicates a inheritance-diable node is configured.";
                          description
                            "Prevents the msg log from being inherited from the parent";
                        }  // container inheritance-diable
                      }  // container out
                    }  // container message
                  }  // container log
    
                  leaf update-source {
                    type xr:Interface-name;
                    description
                      "Source of routing updates";
                  }
    
                  container local-address-subnet {
                    description
                      "Local address subnet of routing updates";
                    leaf ip-address {
                      type inet:ip-address-no-zone;
                      description
                        "IP address and mask length";
                    }
    
                    leaf mask-length {
                      type uint32 {
                        range "0..128";
                      }
                      description
                        "IP address and mask length";
                    }
                  }  // container local-address-subnet
    
                  container dmz-link-bandwidth {
                    presence
                      "Indicates a dmz-link-bandwidth node is configured.";
                    description
                      "Propagate the DMZ link bandwidth";
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent dmz-link-bandwidth from being inherited from the parent";
                    }  // container inheritance-disable
                  }  // container dmz-link-bandwidth
    
                  container ebgp-recv-extcommunity-dmz {
                    presence
                      "Indicates a ebgp-recv-extcommunity-dmz node is configured.";
                    description
                      "Receive extcommunity dmz link bandwidth from ebgp neighbor";
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent ebgp-send-community-dmz from being inherited from parent";
                    }  // container inheritance-disable
                  }  // container ebgp-recv-extcommunity-dmz
    
                  container ebgp-send-extcommunity-dmz {
                    must
                      "not(cumulative and inheritance-disable)";
                    presence
                      "Indicates a ebgp-send-extcommunity-dmz node is configured.";
                    description
                      "Send extended community dmz link bandwidth to ebgp neighbor";
                    container cumulative {
                      presence
                        "Indicates a cumulative node is configured.";
                      description
                        "Send cumulative community dmz link bandwidth of all multipaths to ebgp neighbor";
                    }  // container cumulative
    
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent ebgp-send-extcommunity-dmz from being inherited from parent";
                    }  // container inheritance-disable
                  }  // container ebgp-send-extcommunity-dmz
    
                  container ttl-security {
                    presence
                      "Indicates a ttl-security node is configured.";
                    description
                      "Enable EBGP TTL security";
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent ttl-security from being inherited from the parent";
                    }  // container inheritance-disable
                  }  // container ttl-security
    
                  container session-open-mode {
                    description
                      "Establish BGP session using this TCP open mode";
                    container active-only {
                      must
                        "not(../passive-only or ../both)";
                      presence
                        "Indicates a active-only node is configured.";
                      description "Active only";
                    }  // container active-only
    
                    container passive-only {
                      must
                        "not(../active-only or ../both)";
                      presence
                        "Indicates a passive-only node is configured.";
                      description "Passive only";
                    }  // container passive-only
    
                    container both {
                      must
                        "not(../active-only or ../passive-only)";
                      presence
                        "Indicates a both node is configured.";
                      description
                        "Prevent session-open-mode being inherited from the parent";
                    }  // container both
                  }  // container session-open-mode
    
                  leaf dscp {
                    type enumeration {
                      enum "default" {
                        value 0;
                        description
                          "Set packets with default dscp (000000)";
                      }
                      enum "cs1" {
                        value 8;
                        description
                          "Set packets with CS1(precedence 1) dscp (001000)";
                      }
                      enum "af11" {
                        value 10;
                        description
                          "Set packets with AF11 dscp (001010)";
                      }
                      enum "af12" {
                        value 12;
                        description
                          "Set packets with AF12 dscp (001100)";
                      }
                      enum "af13" {
                        value 14;
                        description
                          "Set packets with AF13 dscp (001110)";
                      }
                      enum "cs2" {
                        value 16;
                        description
                          "Set packets with CS2(precedence 2) dscp (010000)";
                      }
                      enum "af21" {
                        value 18;
                        description
                          "Set packets with AF21 dscp (010010)";
                      }
                      enum "af22" {
                        value 20;
                        description
                          "Set packets with AF22 dscp (010100)";
                      }
                      enum "af23" {
                        value 22;
                        description
                          "Set packets with AF23 dscp (010110)";
                      }
                      enum "cs3" {
                        value 24;
                        description
                          "Set packets with CS3(precedence 3) dscp (011000)";
                      }
                      enum "af31" {
                        value 26;
                        description
                          "Set packets with AF31 dscp (011010)";
                      }
                      enum "af32" {
                        value 28;
                        description
                          "Set packets with AF32 dscp (011100)";
                      }
                      enum "af33" {
                        value 30;
                        description
                          "Set packets with AF33 dscp (011110)";
                      }
                      enum "cs4" {
                        value 32;
                        description
                          "Set packets with CS4(precedence 4) dscp (100000)";
                      }
                      enum "af41" {
                        value 34;
                        description
                          "Set packets with AF41 dscp (100010)";
                      }
                      enum "af42" {
                        value 36;
                        description
                          "Set packets with AF42 dscp (100100)";
                      }
                      enum "af43" {
                        value 38;
                        description
                          "Set packets with AF43 dscp (100110)";
                      }
                      enum "cs5" {
                        value 40;
                        description
                          "Set packets with CS5(precedence 5) dscp (101000)";
                      }
                      enum "ef" {
                        value 46;
                        description
                          "Set packets with EF dscp (101110)";
                      }
                      enum "cs6" {
                        value 48;
                        description
                          "Set packets with CS6(precedence 6) dscp (110000)";
                      }
                      enum "cs7" {
                        value 56;
                        description
                          "Set packets with CS7(precedence 7) dscp (111000)";
                      }
                    }
                    description
                      "Set IP DSCP (DiffServ CodePoint)";
                  }
    
                  leaf precedence {
                    type enumeration {
                      enum "routine" {
                        value 0;
                        description
                          "Set packets with routine precedence (0)";
                      }
                      enum "priority" {
                        value 1;
                        description
                          "Set packets with priority precedence (1)";
                      }
                      enum "immediate" {
                        value 2;
                        description
                          "Set packets with immediate precedence (2)";
                      }
                      enum "flash" {
                        value 3;
                        description
                          "Set packets with flash precedence (3)";
                      }
                      enum "flash-override" {
                        value 4;
                        description
                          "Set packets with flash override precedence (4)";
                      }
                      enum "critical" {
                        value 5;
                        description
                          "Set packets with critical precedence (5)";
                      }
                      enum "internet" {
                        value 6;
                        description
                          "Set packets with internetwork control precedence (6)";
                      }
                      enum "network" {
                        value 7;
                        description
                          "Set packets with network control precedence (7)";
                      }
                    }
                    description "Set precedence";
                  }
    
                  container capability {
                    description
                      "Advertise capability to the peer";
                    container suppress {
                      description
                        "Suppress advertising capability to the peer ";
                      container four-byte-as {
                        presence
                          "Indicates a four-byte-as node is configured.";
                        description
                          "4-byte-as capability";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent capability suppress 4-type-as being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container four-byte-as
    
                      container all {
                        presence
                          "Indicates a all node is configured.";
                        description
                          "All capabilities";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Do not inherit this configuration from parent group";
                        }  // container inheritance-disable
                      }  // container all
    
                      container extended-nexthop-encoding {
                        presence
                          "Indicates a extended-nexthop-encoding node is configured.";
                        description
                          "Extended-nexthop-encoding capabilities (IETF RFC 5549)";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Do not inherit this configuration from parent group";
                        }  // container inheritance-disable
                      }  // container extended-nexthop-encoding
                    }  // container suppress
    
                    container additional-paths {
                      description
                        "Additional paths capability";
                      container send {
                        presence
                          "Indicates a send node is configured.";
                        description
                          "Additional paths Send capability";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Do not advertise additional paths Send capability";
                        }  // container disable
                      }  // container send
    
                      container receive {
                        presence
                          "Indicates a receive node is configured.";
                        description
                          "Additional paths Receive capability";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Do not advertise additional paths Receive capability";
                        }  // container disable
                      }  // container receive
                    }  // container additional-paths
                  }  // container capability
    
                  container graceful-restart {
                    presence
                      "Indicates a graceful-restart node is configured.";
                    description
                      "Enable graceful restart support for this neighbor";
                    container disable {
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Disable graceful restart support for this neighbor";
                    }  // container disable
    
                    leaf restart-time {
                      type uint32 {
                        range "1..4095";
                      }
                      description
                        "Restart time advertised to the neighbor";
                    }
    
                    leaf stalepath-time {
                      type uint32 {
                        range "1..4095";
                      }
                      description
                        "Maximum time to wait for restart of GR capable peer";
                    }
                  }  // container graceful-restart
    
                  container enforce-first-as {
                    presence
                      "Indicates a enforce-first-as node is configured.";
                    description
                      "Enforce the first AS for EBGP routes";
                    container disable {
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Do not enforce the first AS for EBGP routes";
                    }  // container disable
                  }  // container enforce-first-as
    
                  container cluster-id {
                    description
                      "Enter cluster id for this neighbor";
                    leaf route-reflector-cluster-id {
                      type uint32 {
                        range "1..4294967295";
                      }
                      description
                        "Route-Reflector Cluster-id as 32 bit quantity";
                    }
    
                    leaf ip-address {
                      type inet:ipv4-address-no-zone;
                      description
                        "configure this node";
                    }
                  }  // container cluster-id
    
                  leaf maximum-peers {
                    type uint32 {
                      range "1..4095";
                    }
                    description
                      "Maximum dynamic neighbors";
                  }
    
                  leaf idle-watch-time {
                    type uint32 {
                      range "30..1800";
                    }
                    description
                      "Maximum time to wait for deletion of IDLE state dynamic peer";
                  }
    
                  container egress-engineering {
                    presence
                      "Indicates a egress-engineering node is configured.";
                    description
                      "Enable egress peer engineering for this neighbor";
                    container inheritance-disable {
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Do not inherit egress-engineering from the parent";
                    }  // container inheritance-disable
                  }  // container egress-engineering
    
                  container peer-sets {
                    description
                      "Assign this neighbor to a peer-set used for egress peer engineering";
                    list peer-set {
                      key "peer-set-id";
                      description
                        "Assign this neighbor to a peer-set used for egress peer engineering";
                      leaf peer-set-id {
                        type uint32 {
                          range "1..255";
                        }
                        description
                          "Assign this neighbor to a peer-set used for egress peer engineering";
                      }
                    }  // list peer-set
                  }  // container peer-sets
    
                  container ao {
                    description
                      "Enable Authentiation Option";
                    leaf key-chain-name {
                      type string {
                        length "1..32";
                      }
                      must
                        "not(../inheritance-disable) and (../include-tcp-options/enable or ../include-tcp-options/disable)";
                      description
                        "Name of the key chain - maximum 32 characters";
                    }
    
                    container include-tcp-options {
                      description
                        "Include/Exclude other TCP options in the header";
                      container enable {
                        must
                          "not(../disable or ../../inheritance-disable)";
                        presence
                          "Indicates a enable node is configured.";
                        description
                          "Include other TCP options in the header";
                      }  // container enable
    
                      container disable {
                        must
                          "not(../enable or ../../inheritance-disable)";
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Exclude other TCP options in the header";
                      }  // container disable
    
                      container accept-ao-mismatch-connection {
                        must
                          "../enable or ../disable";
                        presence
                          "Indicates a accept-ao-mismatch-connection node is configured.";
                        description
                          "Accept new connection even if AO mismatched";
                      }  // container accept-ao-mismatch-connection
                    }  // container include-tcp-options
    
                    container inheritance-disable {
                      must
                        "not(../key-chain-name)";
                      presence
                        "Indicates a inheritance-disable node is configured.";
                      description
                        "Prevent keychain from being inherited from parent";
                    }  // container inheritance-disable
                  }  // container ao
                }  // list neighbor-group
              }  // container neighbor-groups
    
              container mpls {
                description
                  "Enable mpls parameters";
                container activate {
                  description
                    "Enter mpls interfaces in BGP mpls activate mode";
                  container interfaces {
                    description
                      "Interface to enable mpls";
                    list interface {
                      key "interface-name";
                      description
                        "Interface to enable mpls";
                      leaf interface-name {
                        type xr:Interface-name;
                        description
                          "Interface to enable mpls";
                      }
                    }  // list interface
                  }  // container interfaces
                }  // container activate
              }  // container mpls
    
              container as-league {
                presence
                  "Indicates a as-league node is configured.";
                description
                  "AS League command mode";
                container peers {
                  description
                    "AS League peers mode";
                  list as {
                    key "as-number";
                    description "bgp as-number";
                    leaf as-number {
                      type xr:Bgp-as-number;
                      description
                        "bgp as-number";
                    }
                  }  // list as
                }  // container peers
              }  // container as-league
    
              container attribute-filter {
                description
                  "Attribute-filter configuration";
                container groups {
                  description
                    "Attribute-filter group command mode";
                  list group {
                    key "group-name";
                    description
                      "Attribute-filter group command mode";
                    leaf group-name {
                      type string {
                        length "1..1024";
                      }
                      description
                        "Attribute-filter group command mode";
                    }
    
                    container attributes {
                      description
                        "Attribute code";
                      container ranges {
                        description
                          "Attribute code in range";
                        list range {
                          must
                            "discard or treat-as-withdraw";
                          key "start end";
                          description
                            "Attribute code in range";
                          leaf start {
                            type uint32 {
                              range
                                "4..13 | 16..255";
                            }
                            description
                              "Attribute code range start";
                          }
    
                          leaf end {
                            type uint32 {
                              range
                                "5..13 | 17..255";
                            }
                            description
                              "Attribute code range end";
                          }
    
                          container discard {
                            presence
                              "Indicates a discard node is configured.";
                            description
                              "Discard this attribute";
                          }  // container discard
    
                          container treat-as-withdraw {
                            presence
                              "Indicates a treat-as-withdraw node is configured.";
                            description
                              "Treat the update message as a Withdraw";
                          }  // container treat-as-withdraw
                        }  // list range
                      }  // container ranges
    
                      list attribute {
                        must
                          "discard or treat-as-withdraw";
                        key "attribute-code";
                        description
                          "Attribute code";
                        leaf attribute-code {
                          type Bgp-attribute-code;
                          description
                            "Attribute code. Also to be set as range start";
                        }
    
                        container discard {
                          presence
                            "Indicates a discard node is configured.";
                          description
                            "Discard this attribute";
                        }  // container discard
    
                        container treat-as-withdraw {
                          presence
                            "Indicates a treat-as-withdraw node is configured.";
                          description
                            "Treat the update message as a Withdraw";
                        }  // container treat-as-withdraw
                      }  // list attribute
    
                      container unrecognized {
                        must
                          "discard or treat-as-withdraw";
                        presence
                          "Indicates a unrecognized node is configured.";
                        description
                          "All unrecognized attributes";
                        container discard {
                          presence
                            "Indicates a discard node is configured.";
                          description
                            "Discard this attribute";
                        }  // container discard
    
                        container treat-as-withdraw {
                          presence
                            "Indicates a treat-as-withdraw node is configured.";
                          description
                            "Treat the update message as a Withdraw";
                        }  // container treat-as-withdraw
                      }  // container unrecognized
                    }  // container attributes
                  }  // list group
                }  // container groups
              }  // container attribute-filter
    
              container default-information {
                description
                  "Control distribution of default information";
                container originate {
                  presence
                    "Indicates a originate node is configured.";
                  description
                    "Distribute a default route";
                }  // container originate
              }  // container default-information
    
              leaf default-metric {
                type uint32 {
                  range "1..4294967295";
                }
                description
                  "default redistributed metric";
              }
    
              container socket {
                description
                  "set socket parameters";
                leaf send-buffer-size {
                  type uint32 {
                    range "4096..131072";
                  }
                  description
                    "socket send buffer size";
                }
    
                leaf bgp-write-buffer-size {
                  type uint32 {
                    range "4096..131072";
                  }
                  must "../send-buffer-size";
                  description
                    "BGP Write buffer size in bytes";
                }
    
                leaf receive-buffer-size {
                  type uint32 {
                    range "512..131072";
                  }
                  description
                    "socket receive buffer size";
                }
    
                leaf bgp-read-buffer-size {
                  type uint32 {
                    range "512..131072";
                  }
                  must "../receive-buffer-size";
                  description
                    "BGP Read buffer size in bytes";
                }
              }  // container socket
    
              container nexthop {
                description
                  "Configure next-hop related items";
                container mpls {
                  description
                    "Configure next-hop related items for mpls";
                  container forwarding {
                    description
                      "Enable next hop mpls forwarding path";
                    container ibgp {
                      presence
                        "Indicates a ibgp node is configured.";
                      description
                        "Enable mpls forwarding path for ibgp learnt nexthops";
                    }  // container ibgp
                  }  // container forwarding
                }  // container mpls
    
                container resolution {
                  description
                    "Configure next-hop related items for resolution";
                  container allow-default {
                    presence
                      "Indicates a allow-default node is configured.";
                    description
                      "Enable nexthops resolution using default route";
                  }  // container allow-default
                }  // container resolution
    
                container validation {
                  description
                    "Configure next-hop reachability validation";
                  container color-extcomm {
                    description
                      "Configure next-hop reachability validation for color-extcomm path";
                    container disable {
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Disable next-hop reachability validation for color-extcomm path";
                    }  // container disable
    
                    container sr-policy {
                      presence
                        "Indicates a sr-policy node is configured.";
                      description
                        "Enable BGP next-hop reachability validation by SR Policy for color-extcomm paths";
                    }  // container sr-policy
                  }  // container color-extcomm
                }  // container validation
    
                container srte-metric {
                  description
                    "Configure BGP next-hop metric inheritance from SR policy";
                  container disable {
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Disable BGP next-hop metric inheritance from SR policy";
                  }  // container disable
                }  // container srte-metric
              }  // container nexthop
    
              container slow-peer {
                description
                  "Disable slow peer detection";
                container detection {
                  description
                    "Disable slow peer detection";
                  container disable {
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Disable slow peer detection";
                  }  // container disable
                }  // container detection
              }  // container slow-peer
    
              container timers {
                description
                  "Adjust routing timers";
                container bgp {
                  presence
                    "Indicates a bgp node is configured.";
                  description "BGP timers";
                  leaf keepalive-interval {
                    type uint32 {
                      range "0..65535";
                    }
                    mandatory true;
                    description "BGP timers";
                  }
    
                  leaf holdtime {
                    type union {
                      type uint32 {
                        range "0";
                      }
                      type uint32 {
                        range "3..65535";
                      }
                    }
                    mandatory true;
                    description
                      "Holdtime. Set 0 to disable keepalives/hold time.";
                  }
    
                  leaf minimum-acceptable-holdtime {
                    type union {
                      type uint32 {
                        range "0";
                      }
                      type uint32 {
                        range "3..65535";
                      }
                    }
                    description
                      "Minimum acceptable holdtime from neighbor. Set 0 to disable keepalives/hold time.";
                  }
                }  // container bgp
              }  // container timers
    
              container nsr {
                presence
                  "Indicates a nsr node is configured.";
                description
                  "Enable non-stop-routing support for all neighbors";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Disable non-stop-routing support for all neighbors";
                }  // container disable
              }  // container nsr
    
              container ibgp {
                description
                  "Set options for iBGP peers";
                container policy {
                  description
                    "Set options for route-policy";
                  container out {
                    description
                      "Set options for outbound policy";
                    container enforce-modifications {
                      presence
                        "Indicates a enforce-modifications node is configured.";
                      description
                        "Allow policy to modify all attributes";
                    }  // container enforce-modifications
                  }  // container out
                }  // container policy
              }  // container ibgp
    
              container mvpn {
                presence
                  "Indicates a mvpn node is configured.";
                description
                  "Connect to PIM/PIM6";
              }  // container mvpn
    
              container graceful-maintenance {
                description
                  "Announce routes with the g-shut community and other
    attrs configured under the neighbors. This
    willeighbors to de-prefer routes from this
    routhoose alternates. This allows the router
    to bt in or out of service gracefully.";
                container activate {
                  presence
                    "Indicates a activate node is configured.";
                  description
                    "All neighbors with graceful-maintenance config";
                  container all-neighbors {
                    presence
                      "Indicates a all-neighbors node is configured.";
                    description
                      "Also neighbors without graceful-maintenance config";
                  }  // container all-neighbors
    
                  container retain-routes {
                    presence
                      "Indicates a retain-routes node is configured.";
                    description
                      "Keep BGP routes in RIB once BGP process stops";
                  }  // container retain-routes
    
                  container interfaces {
                    description
                      "Enable graceful-maintenance on all directly connected ebgp neighbors whose session is going over this interface";
                    list interface {
                      key "interface-name";
                      description
                        "Enable graceful-maintenance on all directly connected ebgp neighbors whose session is going over this interface";
                      leaf interface-name {
                        type xr:Interface-name;
                        description
                          "Interface to enable graceful-maintenance";
                      }
                    }  // list interface
                  }  // container interfaces
    
                  container locations {
                    description
                      "Enable graceful-maintenance on all directly connected ebgp neighbors whose session is going over this line card location";
                    list location {
                      key "location-name";
                      description
                        "Enable graceful-maintenance on all directly connected ebgp neighbors whose session is going over this line card location";
                      leaf location-name {
                        type xr:Node-id;
                        description
                          "Line card location to enable graceful-maintenance";
                      }
                    }  // list location
                  }  // container locations
                }  // container activate
              }  // container graceful-maintenance
    
              container optimal-route-reflection {
                description
                  "Configure optimal-route-reflection group";
                container ipv4 {
                  description "IPv4 ORR group";
                  list orr-group {
                    key "orr-group-name";
                    description
                      "ORR group name - maximum 32 characters";
                    leaf orr-group-name {
                      type string {
                        length "1..32";
                      }
                      description
                        "ORR group name - maximum 32 characters";
                    }
    
                    leaf primary-address {
                      type inet:ipv4-address-no-zone;
                      mandatory true;
                      description
                        "IPv4 primary address";
                    }
    
                    leaf secondary-address {
                      type inet:ipv4-address-no-zone;
                      description
                        "IPv4 secondary address";
                    }
    
                    leaf tertiary-address {
                      type inet:ipv4-address-no-zone;
                      must
                        "../secondary-address";
                      description
                        "IPv4 tertiary address";
                    }
                  }  // list orr-group
                }  // container ipv4
    
                container ipv6 {
                  description "IPv6 ORR group";
                  list orr-group {
                    key "orr-group-name";
                    description
                      "ORR group name - maximum 32 characters";
                    leaf orr-group-name {
                      type string {
                        length "1..32";
                      }
                      description
                        "ORR group name - maximum 32 characters";
                    }
    
                    leaf primary-address {
                      type inet:ipv6-address-no-zone;
                      mandatory true;
                      description
                        "IPv6 primary address";
                    }
    
                    leaf secondary-address {
                      type inet:ipv6-address-no-zone;
                      description
                        "IPv6 secondary address";
                    }
    
                    leaf tertiary-address {
                      type inet:ipv6-address-no-zone;
                      must
                        "../secondary-address";
                      description
                        "IPv6 tertiary address";
                    }
                  }  // list orr-group
                }  // container ipv6
              }  // container optimal-route-reflection
    
              container bgp {
                description "BGP commands";
                container as-path-loopcheck {
                  presence
                    "Indicates a as-path-loopcheck node is configured.";
                  description
                    "Enable AS-path loop checking for iBGP peers";
                }  // container as-path-loopcheck
    
                container auto-policy-soft-reset {
                  description
                    "Enable automatic soft peer reset on policy reconfiguration";
                  container disable {
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Disable automatic soft peer reset on policy reconfiguration";
                  }  // container disable
                }  // container auto-policy-soft-reset
    
                container bestpath {
                  description
                    "Change default route selection criteria";
                  container as-path {
                    description "AS path length";
                    container ignore {
                      presence
                        "Indicates a ignore node is configured.";
                      description
                        "Ignore as-path length";
                    }  // container ignore
    
                    container multipath-relax {
                      presence
                        "Indicates a multipath-relax node is configured.";
                      description
                        "Relax as-path check for multipath selection";
                    }  // container multipath-relax
                  }  // container as-path
    
                  container cost-community {
                    description "Cost community";
                    container ignore {
                      presence
                        "Indicates a ignore node is configured.";
                      description
                        "Ignore cost-community comparison";
                    }  // container ignore
                  }  // container cost-community
    
                  container compare-routerid {
                    presence
                      "Indicates a compare-routerid node is configured.";
                    description
                      "Compare router-id for identical EBGP paths";
                  }  // container compare-routerid
    
                  container aigp {
                    description "AIGP attribute";
                    container ignore {
                      presence
                        "Indicates a ignore node is configured.";
                      description
                        "Ignore AIGP attribute";
                    }  // container ignore
                  }  // container aigp
    
                  container igp-metric {
                    description
                      "IGP metric values";
                    container ignore {
                      presence
                        "Indicates a ignore node is configured.";
                      description
                        "Ignore IGP metric during path comparison";
                    }  // container ignore
    
                    container sr-policy {
                      presence
                        "Indicates a sr-policy node is configured.";
                      description
                        "Use next-hop admin/metric from SR policy at Next Hop metric comparison stage";
                    }  // container sr-policy
                  }  // container igp-metric
    
                  container med {
                    description "MED related";
                    container always {
                      presence
                        "Indicates a always node is configured.";
                      description
                        "Allow comparing MED from different neighbors";
                    }  // container always
    
                    container confed {
                      presence
                        "Indicates a confed node is configured.";
                      description
                        "Compare MED among confederation paths";
                    }  // container confed
    
                    container missing-as-worst {
                      presence
                        "Indicates a missing-as-worst node is configured.";
                      description
                        "Treat missing MED as the least preferred one";
                    }  // container missing-as-worst
                  }  // container med
    
                  container origin-as {
                    description
                      "BGP origin-AS knobs";
                    container use {
                      description
                        "BGP origin-AS knobs";
                      container validity {
                        presence
                          "Indicates a validity node is configured.";
                        description
                          "BGP bestpath selection will use origin-AS validity";
                      }  // container validity
                    }  // container use
    
                    container allow {
                      description
                        "BGP origin-AS knobs";
                      container invalid {
                        presence
                          "Indicates a invalid node is configured.";
                        description
                          "BGP bestpath selection will allow 'invalid' origin-AS";
                      }  // container invalid
                    }  // container allow
                  }  // container origin-as
    
                  container sr-policy {
                    description
                      "Paths over SR-policy";
                    container prefer {
                      presence
                        "Indicates a sr-policy node is configured.";
                      description
                        "Consider only paths over SR Policy for bestpath selection";
                    }  // container prefer
                  }  // container sr-policy
                }  // container bestpath
    
                container cluster-id {
                  description
                    "Configure Route-Reflector Cluster-id";
                  leaf route-reflector-cluster-id {
                    type uint32 {
                      range "1..4294967295";
                    }
                    description
                      "Route-Reflector Cluster-id as 32 bit quantity";
                  }
    
                  leaf ip-address {
                    type inet:ipv4-address-no-zone;
                    description
                      "configure this node";
                  }
                }  // container cluster-id
    
                container confederation {
                  description
                    "AS confederation parameters";
                  container identifier {
                    description
                      "Set routing domain confederation AS";
                    leaf as {
                      type xr:Bgp-as-number;
                      description
                        "bgp as-number";
                    }
                  }  // container identifier
    
                  list peers {
                    key "peer-as-number";
                    description
                      "Enter peer ASs in BGP confederation mode";
                    leaf peer-as-number {
                      type xr:Bgp-as-number;
                      description
                        "bgp as-number";
                    }
                  }  // list peers
                }  // container confederation
    
                container default {
                  description
                    "Configure default value";
                  leaf local-preference {
                    type uint32 {
                      range "0..4294967295";
                    }
                    description
                      "Local preference";
                  }
                }  // container default
    
                container enforce-first-as {
                  description
                    "Enforce the first AS for EBGP routes";
                  container disable {
                    presence
                      "Indicates a disable node is configured.";
                    description "Disable";
                  }  // container disable
                }  // container enforce-first-as
    
                container fast-external-fallover {
                  description
                    "Immediately reset session if a link to a directly connected external peer goes down";
                  container disable {
                    presence
                      "Indicates a disable node is configured.";
                    description "Disable";
                  }  // container disable
                }  // container fast-external-fallover
    
                container graceful-restart {
                  presence
                    "Indicates a graceful-restart node is configured.";
                  description
                    "Enable Graceful Restart support";
                  leaf purge-time {
                    type uint32 {
                      range "0..6000";
                    }
                    description
                      "Time before stale routes are purged.";
                  }
    
                  leaf restart-time {
                    type uint32 {
                      range "1..4095";
                    }
                    description
                      "Restart time advertised to neighbors";
                  }
    
                  leaf stalepath-time {
                    type uint32 {
                      range "1..4095";
                    }
                    description
                      "Maximum time to wait for restart of GR capable peers";
                  }
    
                  container graceful-reset {
                    presence
                      "Indicates a graceful-reset node is configured.";
                    description
                      "Reset gracefully if configuration change forces a peer reset";
                  }  // container graceful-reset
    
                  container retain-nbr-routes {
                    description
                      "Retain neighbor routes when neighbor session resets if neighbor also has graceful restart disabled";
                    container disable {
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "do not retain neighbor routes";
                    }  // container disable
                  }  // container retain-nbr-routes
                }  // container graceful-restart
    
                container read-only {
                  presence
                    "Indicates a read-only node is configured.";
                  description
                    "Allow duplicate table config and disable update generation";
                }  // container read-only
    
                container install {
                  description
                    "Install diversion path to RIB/CEF";
                  container diversion {
                    presence
                      "Indicates a diversion node is configured.";
                    description
                      "Install diversion path to RIB/CEF";
                  }  // container diversion
                }  // container install
    
                container log {
                  description "Log bgp info";
                  container neighbor {
                    description
                      "Log neighbor state info";
                    container changes {
                      description
                        "Log neighbor up/down and reset reason";
                      container disable {
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable logging";
                      }  // container disable
    
                      container detail {
                        presence
                          "Indicates a detail node is configured.";
                        description
                          "Include extra detail in change messages";
                      }  // container detail
                    }  // container changes
                  }  // container neighbor
    
                  container message {
                    description
                      "Log neighbor inbound/outbound message";
                    container disable {
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Disable inbound and outbound message logging for all neighbors under the vrf";
                    }  // container disable
                  }  // container message
                }  // container log
    
                container multipath {
                  description
                    "Change multipath selection criteria";
                  container as-path {
                    description "AS path";
                    container ignore {
                      description
                        "Ignore as-path related check for multipath selection";
                      container exact-match {
                        presence
                          "Indicates a exact-match node is configured.";
                        description
                          "Ignore as-path for multipath selection";
                      }  // container exact-match
    
                      container onwards {
                        presence
                          "Indicates a onwards node is configured.";
                        description
                          "Ignore everything onwards as-path for multipath selection";
                      }  // container onwards
                    }  // container ignore
                  }  // container as-path
                }  // container multipath
    
                container redistribute-internal {
                  presence
                    "Indicates a redistribute-internal node is configured.";
                  description
                    "Allow redistribution of iBGP into IGPs (dangerous)";
                }  // container redistribute-internal
    
                leaf router-id {
                  type inet:ipv4-address-no-zone;
                  description
                    "Configure Router-id";
                }
    
                container unsafe-ebgp-policy {
                  presence
                    "Indicates a unsafe-ebgp-policy node is configured.";
                  description
                    "Make eBGP neighbors with no policy pass all routes";
                }  // container unsafe-ebgp-policy
    
                container update-delay {
                  presence
                    "Indicates a update-delay node is configured.";
                  description
                    "Set the max initial delay for sending updates";
                  leaf delay {
                    type uint32 {
                      range "0..3600";
                    }
                    mandatory true;
                    description
                      "Set the max initial delay for sending updates";
                  }
    
                  container always {
                    presence
                      "Indicates a always node is configured.";
                    description
                      "Keepalive trigger bestpath is disabled and delay is enforced";
                  }  // container always
                }  // container update-delay
    
                leaf scan-time {
                  type uint32 {
                    range "5..3600";
                  }
                  description
                    "Configure background scanner interval for generic scanner";
                }
    
                container maximum {
                  description
                    "Maximum number that can be configured";
                  leaf neighbor {
                    type uint32 {
                      range "1..15000";
                    }
                    description
                      "Maximum number of neighbors that can be configured";
                  }
                }  // container maximum
    
                container origin-as {
                  description
                    "BGP origin-AS knobs";
                  container validation {
                    description
                      "BGP origin-AS validation knobs";
                    container signal {
                      description
                        "Signal origin-AS validity towards peers";
                      container ibgp {
                        presence
                          "Indicates a ibgp node is configured.";
                        description
                          "Signal origin-AS validity towards iBGP peers";
                      }  // container ibgp
                    }  // container signal
    
                    container time {
                      description
                        "Time to wait between an RPKI update and a BGP table walk";
                      container off {
                        presence
                          "Indicates a off node is configured.";
                        description
                          "No automatic prefix validation after an RPKI update";
                      }  // container off
    
                      leaf prefix-validation-time {
                        type uint32 {
                          range "5..60";
                        }
                        description
                          "Prefix validation time (in seconds)";
                      }
                    }  // container time
    
                    container disable {
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Disable RPKI origin-AS validation";
                    }  // container disable
                  }  // container validation
                }  // container origin-as
              }  // container bgp
    
              container update {
                description
                  "BGP Update configuration";
                container out {
                  description
                    "BGP Update generation configuration";
                  container logging {
                    presence
                      "Indicates a logging node is configured.";
                    description
                      "Enable logging of update generation events";
                  }  // container logging
                }  // container out
    
                leaf limit {
                  type uint32 {
                    range "16..2048";
                  }
                  description
                    "Upper bound on transient memory usage for update generation";
                }
    
                container in {
                  description
                    "Inbound update message handling";
                  container error-handling {
                    description
                      "Inbound update message error handling";
                    container basic {
                      description
                        "Inbound update message basic error handling";
                      container ebgp {
                        description
                          "Inbound update message basic error handling for EBGP neighbors";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable inbound update message basic error handling for EBGP neighbors";
                        }  // container disable
                      }  // container ebgp
    
                      container ibgp {
                        description
                          "Inbound update message basic error handling for IBGP neighbors";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable inbound update message basic error handling for IBGP neighbors";
                        }  // container disable
                      }  // container ibgp
                    }  // container basic
    
                    container extended {
                      description
                        "Inbound update message extended error handling";
                      container ebgp {
                        presence
                          "Indicates a ebgp node is configured.";
                        description
                          "Inbound update message extended error handling for EBGP neighbors";
                      }  // container ebgp
    
                      container ibgp {
                        presence
                          "Indicates a ibgp node is configured.";
                        description
                          "Inbound update message extended error handling for IBGP neighbors";
                      }  // container ibgp
                    }  // container extended
                  }  // container error-handling
                }  // container in
              }  // container update
    
              container bfd {
                description
                  "Configure BFD parameters";
                leaf minimum-interval {
                  type uint32 {
                    range "3..30000";
                  }
                  description "Hello interval";
                }
    
                leaf multiplier {
                  type uint32 {
                    range "2..16";
                  }
                  description
                    "Detect multiplier";
                }
              }  // container bfd
    
              container as-lists {
                description "List of AS numbers";
                list as-list {
                  key "as-list-name";
                  description
                    "List of AS numbers";
                  leaf as-list-name {
                    type xr:Cisco-ios-xr-string {
                      length "1..1024";
                    }
                    description
                      "List of AS numbers";
                  }
    
                  list as {
                    key "as-number";
                    description "bgp as-number";
                    leaf as-number {
                      type xr:Bgp-as-number;
                      description
                        "bgp as-number";
                    }
                  }  // list as
                }  // list as-list
              }  // container as-lists
    
              container adjacencies {
                description
                  "Submode to configure adjacencies in an EPE set";
                container ip-addresses {
                  description
                    "Firsthop address of the adjacency";
                  list ip-address {
                    key "address";
                    description
                      "Firsthop address of the adjacency";
                    leaf address {
                      type inet:ip-address-no-zone;
                      description
                        "Firsthop address of the adjacency";
                    }
    
                    container peer-sets {
                      description
                        "Assign this adjacency to a peer-set used for egress peer engineering";
                      list peer-set {
                        key "peer-set-id";
                        description
                          "Assign this adjacency to a peer-set used for egress peer engineering";
                        leaf peer-set-id {
                          type uint32 {
                            range "1..255";
                          }
                          description
                            "Assign this adjacency to a peer-set used for egress peer engineering";
                        }
                      }  // list peer-set
                    }  // container peer-sets
    
                    container adjacency-sid {
                      description
                        "Configure SID value for this Adjacency EPE object";
                      leaf index {
                        type uint32 {
                          range "0..1033575";
                        }
                        description
                          "Segment Index value to assign. This will be off SRLB range";
                      }
                    }  // container adjacency-sid
                  }  // list ip-address
                }  // container ip-addresses
              }  // container adjacencies
    
              container segment-routing {
                description
                  "Enter Segment-Routing Mode";
                container srv6 {
                  presence
                    "Indicates srv6 node is configured";
                  description "Configure srv6";
                  leaf locator {
                    type xr:Cisco-ios-xr-string {
                      length "1..1024";
                    }
                    description
                      "Configure locator name";
                  }
                }  // container srv6
              }  // container segment-routing
    
              container vrfs {
                description "Specify a vrf name";
                list vrf {
                  key "vrf-name";
                  description
                    "Specify a vrf name";
                  leaf vrf-name {
                    type xr:Cisco-ios-xr-string {
                      length "1..32";
                    }
                    description
                      "Specify a vrf name";
                  }
    
                  container address-families {
                    description
                      "Enter Address Family command mode";
                    list address-family {
                      key "af-name";
                      description
                        "Enter Address Family command mode";
                      leaf af-name {
                        type Bgp-address-family;
                        description
                          "Enter Address Family command mode";
                      }
    
                      container distance {
                        description
                          "Define an administrative distance";
                        container bgp {
                          presence
                            "Indicates a bgp node is configured.";
                          description
                            "BGP distance";
                          leaf external-routes {
                            type uint32 {
                              range "1..255";
                            }
                            mandatory true;
                            description
                              "BGP distance";
                          }
    
                          leaf internal-routes {
                            type uint32 {
                              range "1..255";
                            }
                            mandatory true;
                            description
                              "Distance for routes internal to the AS";
                          }
    
                          leaf local-routes {
                            type uint32 {
                              range "1..255";
                            }
                            mandatory true;
                            description
                              "Distance for local routes";
                          }
                        }  // container bgp
                      }  // container distance
    
                      container allow {
                        description
                          "Allow sending default originate route to VPN neighbor";
                        container vpn {
                          description
                            "Originate default route to VPN neighbor";
                          container default-originate {
                            presence
                              "Indicates a default-originate node is configured.";
                            description
                              "Originate default route to VPN neighbor";
                          }  // container default-originate
                        }  // container vpn
                      }  // container allow
    
                      container optimal-route-reflection {
                        when
                          "../af-name != 'ipv4-mvpn' and ../af-name != 'ipv6-mvpn' and ../af-name != 'ipv4-flowspec' and ../af-name != 'ipv6-flowspec' and ../af-name != 'ipv4-sr-policy' and ../af-name != 'ipv6-sr-policy'";
                        description
                          "Configure optimal-route-reflection group";
                        list orr-group {
                          key "orr-group-name";
                          description
                            "ORR group name - maximum 32 characters";
                          leaf orr-group-name {
                            type xr:Cisco-ios-xr-string {
                              length "1..32";
                            }
                            description
                              "ORR group name - maximum 32 characters";
                          }
    
                          leaf primary-address {
                            type inet:ip-address-no-zone;
                            mandatory true;
                            description
                              "IPv4 primary address";
                          }
    
                          leaf secondary-address {
                            type inet:ip-address-no-zone;
                            description
                              "IPv4 secondary address";
                          }
    
                          leaf tertiary-address {
                            type inet:ip-address-no-zone;
                            must
                              "../secondary-address";
                            description
                              "IPv4 tertiary address";
                          }
                        }  // list orr-group
    
                        list apply {
                          key "orr-group-name";
                          description
                            "Apply optimal-route-reflection group";
                          leaf orr-group-name {
                            type xr:Cisco-ios-xr-string {
                              length "1..32";
                            }
                            description
                              "ORR group name - maximum 32 characters";
                          }
                        }  // list apply
    
                        container fallback-default-bestpath {
                          presence
                            "Indicates an ebgp node is configured.";
                          description
                            "In case none of the paths are accessible in
    an ORR table, fallback to default table bestpath
    as ORR bestpath";
                        }  // container fallback-default-bestpath
                      }  // container optimal-route-reflection
    
                      container maximum-paths {
                        when
                          "../af-name != 'vpn4-unicast' and ../af-name != 'vpnv4-multicast' and ../af-name != 'vpnv6-unicast' and ../af-name != 'vpnv6-multicast' and ../af-name != 'vpnv4-mdt' and ../af-name != 'l2vpn-vpls-vpws' and ../af-name != 'l2vpn-evpn' and ../af-name != 'l2vpn-mspw' and ../af-name != 'ipv4-mvpn' and ../af-name != 'ipv6-mvpn' and ../af-name != 'ipv4-tunnel' and ../af-name != 'ipv4-rt-filter' and ../af-name != 'link-state-link-state' and ../af-name != 'ipv4-flowspec' and ../af-name != 'ipv6-flowspec' and ../af-name != 'vpnv4-flowspec' and ../af-name != 'vpnv6-flowspec' and ../af-name != 'ipv4-sr-policy' and ../af-name != 'ipv6-sr-policy'";
                        description
                          "Forward packets over multiple paths";
                        container ebgp {
                          presence
                            "Indicates an ebgp node is configured.";
                          description
                            "eBGP-multipath";
                          leaf multipath {
                            type uint32 {
                              range "2..128";
                            }
                            mandatory true;
                            description
                              "eBGP-multipath";
                          }
    
                          container selective {
                            presence
                              "Indicates a selective node is configured.";
                            description
                              "Allow multipaths only from marked neighbors";
                          }  // container selective
    
                          container order {
                            description
                              "Order candidate multipaths for selection as per configured number";
                            container igp-metric {
                              presence
                                "Indicates an igp-metric node is configured.";
                              description
                                "Order by IGP metric ";
                            }  // container igp-metric
                          }  // container order
                        }  // container ebgp
    
                        container eibgp {
                          presence
                            "Indicates an eibgp node is configured.";
                          description
                            "eiBGP-multipath";
                          leaf multipath {
                            type uint32 {
                              range "2..128";
                            }
                            mandatory true;
                            description
                              "eiBGP-multipath";
                          }
    
                          container selective {
                            presence
                              "Indicates a selective node is configured.";
                            description
                              "Allow multipaths only from marked neighbors";
                          }  // container selective
    
                          container order {
                            description
                              "Order candidate multipaths for selection as per configured number";
                            container igp-metric {
                              presence
                                "Indicates an igp-metric node is configured.";
                              description
                                "Order by IGP metric ";
                            }  // container igp-metric
                          }  // container order
                        }  // container eibgp
    
                        container ibgp {
                          presence
                            "Indicates an ibgp node is configured.";
                          description
                            "iBGP-multipath";
                          leaf multipath {
                            type uint32 {
                              range "2..128";
                            }
                            mandatory true;
                            description
                              "iBGP-multipath";
                          }
    
                          container selective {
                            presence
                              "Indicates a selective node is configured.";
                            description
                              "Allow multipaths only from marked neighbors";
                          }  // container selective
    
                          container order {
                            description
                              "Order candidate multipaths for selection as per configured number";
                            container igp-metric {
                              presence
                                "Indicates an igp-metric node is configured.";
                              description
                                "Order by IGP metric ";
                            }  // container igp-metric
                          }  // container order
    
                          container unequal-cost {
                            presence
                              "Indicates an unequal-cost node is configured.";
                            description
                              "Allow multipaths to have different BGP nexthop IGP metrics ";
                          }  // container unequal-cost
                        }  // container ibgp
                      }  // container maximum-paths
    
                      container additional-paths {
                        when
                          "../af-name != 'ipv4-multicast' and ../af-name != 'ipv6-multicast' and ../af-name != 'ipv4-mdt' and ../af-name != 'l2vpn-vpls-vpws' and ../af-name != 'ipv4-tunnel'";
                        description
                          "Additional paths configuration";
                        container send {
                          presence
                            "Indicates a send node is configured.";
                          description
                            "Additional paths Send capability";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Do not advertise additional paths Send capability";
                          }  // container disable
                        }  // container send
    
                        container receive {
                          presence
                            "Indicates a receive node is configured.";
                          description
                            "Additional paths Receive capability";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Do not advertise additional paths Receive capability";
                          }  // container disable
                        }  // container receive
    
                        container selection {
                          description
                            "Additional paths selection";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable additional paths selection";
                          }  // container disable
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            description
                              "Route-policy for additional paths selection";
                          }
                        }  // container selection
                      }  // container additional-paths
    
                      container route-target {
                        description
                          "Route target RIB installation";
                        container download {
                          presence
                            "Indicates a download node is configured.";
                          description
                            "Install route-targets in RIB";
                        }  // container download
                      }  // container route-target
    
                      container enable {
                        description
                          "Enable commands for address-family";
                        container label-mode {
                          presence
                            "Indicates a label-mode node is configured.";
                          description
                            "enable label allocation for address-family.
    Use only if dual mode srv6 and mpls is needed.
    This will result in allocation of both,
    label and sid for prefixes in the vrf.";
                        }  // container label-mode
                      }  // container enable
    
                      container advertise {
                        description
                          "Advertise BGP path";
                        container best-external {
                          presence
                            "Indicates a best-external node is configured.";
                          description
                            "Advertise best-external path";
                          container labeled-unicast {
                            must
                              "not(../disable)";
                            presence
                              "Indicates a labeled-unicast node is configured.";
                            description
                              "Limit best-external to Labeled-Unicast address family";
                          }  // container labeled-unicast
    
                          container disable {
                            must
                              "not(../labeled-unicast)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Do not advertise best-external path";
                          }  // container disable
                        }  // container best-external
    
                        container local-labeled-route {
                          when
                            "../../af-name = 'ipv4-unicast' or ../../af-name = 'ipv6-unicast'";
                          description
                            "Advertisement of routes with local-label";
                          container safi-unicast {
                            presence
                              "Indicates a safi-unicast node is configured.";
                            description
                              "Advertisement of routes with local-label via Unicast SAFI";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Do not advertise routes with local-label via Unicast SAFI";
                            }  // container disable
                          }  // container safi-unicast
                        }  // container local-labeled-route
                      }  // container advertise
    
                      container nexthop {
                        description "Nexthop";
                        container resolution {
                          description
                            "Nexthop resolution";
                          container prefix-length {
                            description
                              "Nexthop resolution prefix-length";
                            leaf minimum {
                              type union {
                                type uint32 {
                                  range "0..32";
                                }
                                type uint32 {
                                  range "0..128";
                                }
                              }
                              description
                                "Set minimum prefix-length for nexthop resolution";
                            }
    
                            leaf minimum-ipv6 {
                              type uint32 {
                                range "0..128";
                              }
                              description
                                "IPv6 Prefix-length value";
                            }
                          }  // container prefix-length
                        }  // container resolution
                      }  // container nexthop
    
                      container networks {
                        description
                          "Specify a network to announce via BGP";
                        list network {
                          key "address masklength";
                          description
                            "IPv6 network and mask or masklength";
                          leaf address {
                            type inet:ip-address-no-zone;
                            description
                              "IPv6 network and mask or masklength";
                          }
    
                          leaf masklength {
                            type uint16 {
                              range "0..128";
                            }
                            description
                              "Network in prefix/length format (prefix part)";
                          }
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            description
                              "Route-policy to modify the attributes";
                          }
    
                          container backdoor {
                            presence
                              "Indicates a backdoor node is configured.";
                            description
                              "Specify a BGP backdoor route";
                          }  // container backdoor
    
                          container multipath {
                            presence
                              "Indicates a backdoor node is configured.";
                            description
                              "Enable installation of multiple paths from RIB";
                          }  // container multipath
                        }  // list network
                      }  // container networks
    
                      container aggregate-addresses {
                        description
                          "Configure BGP aggregate entries";
                        list aggregate-address {
                          key "address masklength";
                          description
                            "IPv6 Aggregate address and mask or masklength";
                          leaf address {
                            type inet:ip-address-no-zone;
                            description
                              "IPv6 Aggregate address and mask or masklength";
                          }
    
                          leaf masklength {
                            type uint16 {
                              range "0..128";
                            }
                            description
                              "Network in prefix/length format (prefix part)";
                          }
    
                          container as-set {
                            presence
                              "Indicates a as-set node is configured.";
                            description
                              "Generate AS set path information";
                          }  // container as-set
    
                          container as-confed-set {
                            presence
                              "Indicates a as-confed-set node is configured.";
                            description
                              "Generate AS confed set path information";
                          }  // container as-confed-set
    
                          container summary-only {
                            presence
                              "Indicates a summary-only node is configured.";
                            description
                              "Filter more specific routes from updates";
                          }  // container summary-only
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            description
                              "Policy to condition advertisement, suppression, and attributes";
                          }
                        }  // list aggregate-address
                      }  // container aggregate-addresses
    
                      container redistribute {
                        when
                          "../af-name = 'ipv4-unicast' or ../af-name = 'ipv4-multicast' or ../af-name = 'ipv6-unicast' or ../af-name = 'ipv6-multicast'";
                        description
                          "Redistribute information from another routing protocol";
                        list ospf {
                          key "router-tag";
                          description
                            "Open Shortest Path First (OSPF/OSPFv3)";
                          leaf router-tag {
                            type xr:Cisco-ios-xr-string {
                              length "1..1024";
                            }
                            description
                              "Open Shortest Path First (OSPF)";
                          }
    
                          container match {
                            presence
                              "Indicates a match node is configured.";
                            description
                              "Redistribution of OSPF routes";
                            container internal {
                              presence
                                "Indicates a internal node is configured.";
                              description
                                "Redistribute OSPF internal routes";
                              container external {
                                presence
                                  "Indicates a external node is configured.";
                                description
                                  "Redistribute OSPF external routes";
                                container one {
                                  presence
                                    "Indicates a one node is configured.";
                                  description
                                    "Redistribute external type 1 routes";
                                  container nssa-external {
                                    presence
                                      "Indicates a nssa-external node is configured.";
                                    description
                                      "Redistribute OSPF NSSA external routes";
                                    container one {
                                      presence
                                        "Indicates a one node is configured.";
                                      description
                                        "Redistribute NSSA external type 1 routes";
                                    }  // container one
    
                                    container two {
                                      presence
                                        "Indicates a two node is configured.";
                                      description
                                        "Redistribute NSSA external type 2 routes";
                                    }  // container two
                                  }  // container nssa-external
                                }  // container one
    
                                container two {
                                  presence
                                    "Indicates a two node is configured.";
                                  description
                                    "Redistribute external type 2 routes";
                                  container nssa-external {
                                    presence
                                      "Indicates a nssa-external node is configured.";
                                    description
                                      "Redistribute OSPF NSSA external routes";
                                    container one {
                                      presence
                                        "Indicates a one node is configured.";
                                      description
                                        "Redistribute NSSA external type 1 routes";
                                    }  // container one
    
                                    container two {
                                      presence
                                        "Indicates a two node is configured.";
                                      description
                                        "Redistribute NSSA external type 2 routes";
                                    }  // container two
                                  }  // container nssa-external
                                }  // container two
    
                                container nssa-external {
                                  presence
                                    "Indicates a nssa-external node is configured.";
                                  description
                                    "Redistribute OSPF NSSA external routes";
                                  container one {
                                    presence
                                      "Indicates a one node is configured.";
                                    description
                                      "Redistribute NSSA external type 1 routes";
                                  }  // container one
    
                                  container two {
                                    presence
                                      "Indicates a two node is configured.";
                                    description
                                      "Redistribute NSSA external type 2 routes";
                                  }  // container two
                                }  // container nssa-external
                              }  // container external
    
                              container nssa-external {
                                presence
                                  "Indicates a nssa-external node is configured.";
                                description
                                  "Redistribute OSPF NSSA external routes";
                                container one {
                                  presence
                                    "Indicates a one node is configured.";
                                  description
                                    "Redistribute NSSA external type 1 routes";
                                }  // container one
    
                                container two {
                                  presence
                                    "Indicates a two node is configured.";
                                  description
                                    "Redistribute NSSA external type 2 routes";
                                }  // container two
                              }  // container nssa-external
                            }  // container internal
    
                            container external {
                              presence
                                "Indicates a external node is configured.";
                              description
                                "Redistribute OSPF external routes";
                              container one {
                                presence
                                  "Indicates a one node is configured.";
                                description
                                  "Redistribute external type 1 routes";
                                container nssa-external {
                                  presence
                                    "Indicates a nssa-external node is configured.";
                                  description
                                    "Redistribute OSPF NSSA external routes";
                                  container one {
                                    presence
                                      "Indicates a one node is configured.";
                                    description
                                      "Redistribute NSSA external type 1 routes";
                                  }  // container one
    
                                  container two {
                                    presence
                                      "Indicates a two node is configured.";
                                    description
                                      "Redistribute NSSA external type 2 routes";
                                  }  // container two
                                }  // container nssa-external
                              }  // container one
    
                              container two {
                                presence
                                  "Indicates a two node is configured.";
                                description
                                  "Redistribute external type 2 routes";
                                container nssa-external {
                                  presence
                                    "Indicates a nssa-external node is configured.";
                                  description
                                    "Redistribute OSPF NSSA external routes";
                                  container one {
                                    presence
                                      "Indicates a one node is configured.";
                                    description
                                      "Redistribute NSSA external type 1 routes";
                                  }  // container one
    
                                  container two {
                                    presence
                                      "Indicates a two node is configured.";
                                    description
                                      "Redistribute NSSA external type 2 routes";
                                  }  // container two
                                }  // container nssa-external
                              }  // container two
    
                              container nssa-external {
                                presence
                                  "Indicates a nssa-external node is configured.";
                                description
                                  "Redistribute OSPF NSSA external routes";
                                container one {
                                  presence
                                    "Indicates a one node is configured.";
                                  description
                                    "Redistribute NSSA external type 1 routes";
                                }  // container one
    
                                container two {
                                  presence
                                    "Indicates a two node is configured.";
                                  description
                                    "Redistribute NSSA external type 2 routes";
                                }  // container two
                              }  // container nssa-external
                            }  // container external
    
                            container nssa-external {
                              presence
                                "Indicates a nssa-external node is configured.";
                              description
                                "Redistribute OSPF NSSA external routes";
                              container one {
                                presence
                                  "Indicates a one node is configured.";
                                description
                                  "Redistribute NSSA external type 1 routes";
                              }  // container one
    
                              container two {
                                presence
                                  "Indicates a two node is configured.";
                                description
                                  "Redistribute NSSA external type 2 routes";
                              }  // container two
                            }  // container nssa-external
                          }  // container match
    
                          container multipath {
                            presence
                              "Indicates a multipath node is configured.";
                            description
                              "Enable installation of multiple paths from RIB";
                          }  // container multipath
    
                          leaf metric {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "Metric for redistributed routes";
                          }
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            description
                              "Route policy reference";
                          }
                        }  // list ospf
    
                        list eigrp {
                          key "instance-name";
                          description
                            "Enhanced Interior Gateway Routing Protocol (EIGRP)";
                          leaf instance-name {
                            type xr:Cisco-ios-xr-string {
                              length "1..1024";
                            }
                            description
                              "Enhanced Interior Gateway Routing Protocol (EIGRP)";
                          }
    
                          container match {
                            description
                              "EIGRP route type for redistribution";
                            container internal {
                              presence
                                "Indicates a internal node is configured.";
                              description
                                "Redistribute EIGRP internal routes";
                              container external {
                                presence
                                  "Indicates a external node is configured.";
                                description
                                  "Redistribute EIGRP external routes";
                              }  // container external
                            }  // container internal
    
                            container external {
                              presence
                                "Indicates a external node is configured.";
                              description
                                "Redistribute EIGRP external routes";
                            }  // container external
                          }  // container match
    
                          container multipath {
                            presence
                              "Indicates a multipath node is configured.";
                            description
                              "Enable installation of multiple paths from RIB";
                          }  // container multipath
    
                          leaf metric {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "Metric for redistributed routes";
                          }
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            description
                              "Route policy reference";
                          }
                        }  // list eigrp
    
                        list application {
                          key "application-name";
                          description
                            "OnePK application routes";
                          leaf application-name {
                            type xr:Cisco-ios-xr-string {
                              length "1..1024";
                            }
                            description
                              "OnePK application name";
                          }
    
                          leaf metric {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "Metric for redistributed routes";
                          }
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            description
                              "Route policy reference";
                          }
    
                          container multipath {
                            presence
                              "Indicates a multipath node is configured.";
                            description
                              "Enable installation of multiple paths from RIB";
                          }  // container multipath
                        }  // list application
    
                        container connected {
                          presence
                            "Indicates a connected node is configured.";
                          description
                            "Connected routes";
                          leaf metric {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "Metric for redistributed routes";
                          }
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            description
                              "Route policy reference";
                          }
    
                          container multipath {
                            presence
                              "Indicates a multipath node is configured.";
                            description
                              "Enable installation of multiple paths from RIB";
                          }  // container multipath
                        }  // container connected
    
                        container lisp {
                          presence
                            "Indicates a lisp node is configured.";
                          description
                            "Locator/ID Separation Protocol (LISP)";
                          leaf metric {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "Metric for redistributed routes";
                          }
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            description
                              "Route policy reference";
                          }
    
                          container multipath {
                            presence
                              "Indicates a multipath node is configured.";
                            description
                              "Enable installation of multiple paths from RIB";
                          }  // container multipath
                        }  // container lisp
    
                        container mobile {
                          presence
                            "Indicates a mobile node is configured.";
                          description
                            "Mobile routes";
                          leaf metric {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "Metric for redistributed routes";
                          }
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            description
                              "Route policy reference";
                          }
    
                          container multipath {
                            presence
                              "Indicates a multipath node is configured.";
                            description
                              "Enable installation of multiple paths from RIB";
                          }  // container multipath
                        }  // container mobile
    
                        container rip {
                          when
                            "../../af-name = 'ipv4-unicast' or ../../af-name = 'ipv4-multicast'";
                          presence
                            "Indicates a rip node is configured.";
                          description
                            "Routing Information Protocol (RIP)";
                          leaf metric {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "Metric for redistributed routes";
                          }
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            description
                              "Route policy reference";
                          }
    
                          container multipath {
                            presence
                              "Indicates a multipath node is configured.";
                            description
                              "Enable installation of multiple paths from RIB";
                          }  // container multipath
                        }  // container rip
    
                        container static {
                          presence
                            "Indicates a static node is configured.";
                          description
                            "Static routes";
                          leaf metric {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "Metric for redistributed routes";
                          }
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            description
                              "Route policy reference";
                          }
    
                          container multipath {
                            presence
                              "Indicates a multipath node is configured.";
                            description
                              "Enable installation of multiple paths from RIB";
                          }  // container multipath
                        }  // container static
    
                        container subscriber {
                          presence
                            "Indicates a lisp node is configured.";
                          description
                            "subscriber routes";
                          leaf metric {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "Metric for redistributed routes";
                          }
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            description
                              "Route policy reference";
                          }
    
                          container multipath {
                            presence
                              "Indicates a multipath node is configured.";
                            description
                              "Enable installation of multiple paths from RIB";
                          }  // container multipath
                        }  // container subscriber
                      }  // container redistribute
    
                      leaf table-policy {
                        type xr:Route-policy-name;
                        description
                          "Configure policy for installation of routes to RIB";
                      }
    
                      container allocate-label {
                        description
                          "Allocate label for selected prefixes";
                        container all {
                          presence
                            "Indicates a all node is configured.";
                          description
                            "Allocate labels for all prefixes";
                          container unlabeled-path {
                            presence
                              "Indicates a unlabeled-path node is configured.";
                            description
                              "Allocate label for unlabeled paths too";
                          }  // container unlabeled-path
                        }  // container all
    
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "Use a route policy to select prefixes for label allocation";
                        }
                      }  // container allocate-label
    
                      container label {
                        description
                          "Label-related configuration";
                        container mode {
                          description
                            "Select label mode";
                          container per-prefix {
                            when
                              "../../../af-name = 'ipv4-unicast' or ../../../af-name = 'ipv6-unicast'";
                            must
                              "not(../per-ce or ../per-vrf or ../route-policy)";
                            presence
                              "Indicates a per-prefix node is configured.";
                            description
                              "Set per perfix label mode";
                          }  // container per-prefix
    
                          container per-ce {
                            when
                              "../../../af-name = 'ipv4-unicast' or ../../../af-name = 'ipv6-unicast'";
                            must
                              "not(../per-prefix or ../per-vrf or ../route-policy)";
                            presence
                              "Indicates a per-ce node is configured.";
                            description
                              "Set per CE label mode";
                          }  // container per-ce
    
                          container per-vrf {
                            when
                              "../../../af-name = 'ipv4-unicast' or ../../../af-name = 'ipv6-unicast'";
                            must
                              "not(../per-prefix or ../per-ce or ../route-policy)";
                            presence
                              "Indicates a per-vrf node is configured.";
                            description
                              "Set per VRF label mode";
                          }  // container per-vrf
    
                          leaf route-policy {
                            when
                              "../../../af-name = 'ipv4-unicast' or ../../../af-name = 'ipv6-unicast'";
                            type xr:Route-policy-name;
                            must
                              "not(../per-prefix or ../per-ce or ../per-vrf)";
                            description
                              "Use a route policy to select prefixes for label allocation mode";
                          }
                        }  // container mode
                      }  // container label
    
                      container bgp {
                        description
                          "BGP Commands";
                        container dampening {
                          presence
                            "Indicates a dampening node is configured.";
                          description
                            "Enable route-flap dampening";
                          leaf half-life-time {
                            type uint32 {
                              range "1..45";
                            }
                            must
                              "not(../route-policy)";
                            description
                              "Half-life time for the penalty";
                          }
    
                          leaf start-reusing-route {
                            type uint32 {
                              range "1..20000";
                            }
                            must
                              "../half-life-time and ../start-suppressing-route";
                            description
                              "Value to start reusing a route";
                          }
    
                          leaf start-suppressing-route {
                            type uint32 {
                              range "1..20000";
                            }
                            must
                              "../start-reusing-route and ../maximum-duration";
                            description
                              "Value to start suppressing a route";
                          }
    
                          leaf maximum-duration {
                            type uint32 {
                              range "1..255";
                            }
                            must
                              "../start-suppressing-route";
                            description
                              "Maximum duration to suppress a stable route";
                          }
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            must
                              "not(../half-life-time)";
                            description
                              "Route policy to specify criteria for dampening";
                          }
                        }  // container dampening
    
                        container attribute-download {
                          presence
                            "Indicates a attribute-download node is configured.";
                          description
                            "Configure attribute download for this address-family";
                        }  // container attribute-download
    
                        container origin-as {
                          description
                            "BGP origin-AS knobs";
                          container validation {
                            description
                              "BGP origin-AS validation knobs";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable RPKI origin-AS validation";
                            }  // container disable
    
                            container enable {
                              presence
                                "Indicates a enable node is configured.";
                              description
                                "Enable RPKI origin-AS validation";
                            }  // container enable
    
                            container signal {
                              description
                                "Signal origin-AS validity towards peers";
                              container ibgp {
                                presence
                                  "Indicates a ibgp node is configured.";
                                description
                                  "Signal origin-AS validity towards iBGP peers";
                              }  // container ibgp
                            }  // container signal
                          }  // container validation
                        }  // container origin-as
    
                        container bestpath {
                          description
                            "Change default route selection criteria";
                          container origin-as {
                            description
                              "BGP origin-AS knobs";
                            container use {
                              description
                                "BGP origin-AS knobs";
                              container validity {
                                presence
                                  "Indicates a validity node is configured.";
                                description
                                  "BGP bestpath selection will use origin-AS validity";
                              }  // container validity
                            }  // container use
    
                            container allow {
                              description
                                "BGP origin-AS knobs";
                              container invalid {
                                presence
                                  "Indicates a invalid node is configured.";
                                description
                                  "BGP bestpath selection will allow 'invalid' origin-AS";
                              }  // container invalid
                            }  // container allow
                          }  // container origin-as
                        }  // container bestpath
                      }  // container bgp
    
                      container event {
                        description
                          "Policy for per-prefix tracing";
                        container prefix {
                          description
                            "Policy for per-prefix tracing";
                          leaf route-policy {
                            type xr:Route-policy-name;
                            description
                              "Policy for per-prefix tracing";
                          }
                        }  // container prefix
                      }  // container event
    
                      container dynamic-med {
                        description
                          "Dynamic MED Interval";
                        leaf interval {
                          type uint32 {
                            range "0..10";
                          }
                          description
                            "Update generation delay (in minutes) after a MED change";
                        }
                      }  // container dynamic-med
    
                      container weight {
                        description
                          "Define or modify weight";
                        container reset-on-import {
                          presence
                            "Indicates a reset-on-import node is configured.";
                          description
                            "Reset weight of paths on import";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Do not reset weight of paths on import";
                          }  // container disable
                        }  // container reset-on-import
                      }  // container weight
    
                      container as-path-loopcheck {
                        description
                          "Configure AS Path loop checking";
                        container out {
                          description
                            "For outbound updates";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable";
                          }  // container disable
                        }  // container out
                      }  // container as-path-loopcheck
    
                      container global-table-multicast {
                        presence
                          "Indicates a global-table-multicast node is configured.";
                        description
                          "Enable global table multicast";
                      }  // container global-table-multicast
    
                      container segmented-multicast {
                        presence
                          "Indicates a segmented-multicast node is configured.";
                        description
                          "Enable segmented multicast";
                      }  // container segmented-multicast
    
                      container label-security {
                        description
                          "BGP Label Security";
                        container asbr {
                          description
                            "Label Security for ASBR peers";
                          container rpf {
                            presence
                              "Indicates a rpf node is configured.";
                            description
                              "RPF Label Security for Option-B";
                          }  // container rpf
                        }  // container asbr
                      }  // container label-security
    
                      container segment-routing {
                        when
                          "../af-name = 'ipv4-unicast' or ../af-name = 'ipv6-unicast'";
                        description
                          "Segment Routing";
                        container srv6 {
                          presence
                            "Indicates a srv6 node is configured.";
                          description
                            "Specify SRv6 configurations";
                          container alloc {
                            description
                              "SID Allocation";
                            container mode {
                              description
                                "SID Allocation mode";
                              container per-ce {
                                must
                                  "not(../per-vrf)";
                                presence
                                  "Indicates a per-ce node is configured.";
                                description
                                  "Set per CE label mode";
                              }  // container per-ce
    
                              container per-vrf {
                                must
                                  "not(../per-ce)";
                                presence
                                  "Indicates a per-vrf node is configured.";
                                description
                                  "Set per VRF label mode";
                              }  // container per-vrf
                            }  // container mode
                          }  // container alloc
    
                          leaf locator {
                            type string {
                              length "1..1024";
                            }
                            description
                              "Specify locator";
                          }
                        }  // container srv6
                      }  // container segment-routing
                    }  // list address-family
                  }  // container address-families
    
                  container neighbors {
                    description
                      "Specify a neighbor router";
                    list neighbor {
                      key "neighbor-address";
                      description
                        "Neighbor address";
                      leaf neighbor-address {
                        type inet:ip-address-no-zone;
                        description
                          "Neighbor address";
                      }
    
                      container address-families {
                        description
                          "Enter Address Family command mode";
                        list address-family {
                          key "af-name";
                          description
                            "Enter Address Family command mode";
                          leaf af-name {
                            type Bgp-address-family;
                            description
                              "Enter Address Family command mode";
                          }
    
                          container use {
                            description
                              "Inherit configuration for this address-family from a group";
                            leaf af-group {
                              type string {
                                length "1..1024";
                              }
                              description
                                "Inherit configuration for this address-family from an af-group";
                            }
                          }  // container use
    
                          container capability {
                            description
                              "Advertise capability to the peer";
                            container orf {
                              description
                                "Advertise ORF capability to the peer";
                              container prefix {
                                description
                                  "Advertise address prefix ORF capability to this neighbor";
                                container receive {
                                  must
                                    "not(../send or ../both or ../none)";
                                  presence
                                    "Indicates a receive node is configured.";
                                  description
                                    "Capability to RECEIVE the ORF from this neighbor";
                                }  // container receive
    
                                container send {
                                  must
                                    "not(../receive or ../both or ../none)";
                                  presence
                                    "Indicates a send node is configured.";
                                  description
                                    "Capability to SEND the ORF to this neighbor";
                                }  // container send
    
                                container both {
                                  must
                                    "not(../receive or ../send or ../none)";
                                  presence
                                    "Indicates a both node is configured.";
                                  description
                                    "Capability to RECEIVE and SEND the ORF from/to this neighbor";
                                }  // container both
    
                                container none {
                                  must
                                    "not(../receive or ../send or ../both)";
                                  presence
                                    "Indicates a none node is configured.";
                                  description
                                    "No capability to RECEIVE or SEND the ORF from/to this neighbor";
                                }  // container none
                              }  // container prefix
                            }  // container orf
                          }  // container capability
    
                          container default-originate {
                            presence
                              "Indicates a default-originate node is configured.";
                            description
                              "Originate default route to this neighbor";
                            leaf route-policy {
                              type xr:Route-policy-name;
                              description
                                "Route policy to specify criteria to originate default";
                            }
    
                            container inheritance-disable {
                              must
                                "not(../route-policy)";
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent default-originate being inherited from a parent group";
                            }  // container inheritance-disable
                          }  // container default-originate
    
                          container maximum-prefix {
                            presence
                              "Indicates a maximum-prefix node is configured.";
                            description
                              "Maximum number of prefixes to accept from this peer";
                            leaf prefix-limit {
                              type uint32 {
                                range
                                  "1..4294967295";
                              }
                              mandatory true;
                              description
                                "Maximum number of prefixes to accept from this peer";
                            }
    
                            leaf threshold {
                              type uint32 {
                                range "1..100";
                              }
                              mandatory true;
                              description
                                "Threshold value (%) at which to generate a warning msg";
                            }
    
                            container warning-only {
                              presence
                                "Indicates a warning-only node is configured.";
                              description
                                "Only give warning message when limit is exceeded";
                            }  // container warning-only
    
                            leaf restart {
                              type uint32 {
                                range "1..65535";
                              }
                              description
                                "Restart time interval";
                            }
    
                            container discard-extra-paths {
                              presence
                                "Indicates a discard-extra-paths node is configured.";
                              description
                                "Discard extra paths when limit is exceeded";
                            }  // container discard-extra-paths
                          }  // container maximum-prefix
    
                          leaf optimal-route-reflection {
                            type string {
                              length "1..32";
                            }
                            description
                              "Configure optiomal-route-reflection for this neighbor";
                          }
    
                          container next-hop-self {
                            presence
                              "Indicates a next-hop-self node is configured.";
                            description
                              "Disable the next hop calculation for this neighbor";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent next-hop-self from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container next-hop-self
    
                          container next-hop-unchanged {
                            presence
                              "Indicates a next-hop-unchanged node is configured.";
                            description
                              "Do not overwrite next hop before advertising to eBGP peers";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent next-hop-unchanged from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container next-hop-unchanged
    
                          container slow-peer {
                            description
                              "configuration commands for slow-peer";
                            container detection {
                              description
                                "Enable or disable slow peer detection.";
                              container enable {
                                must
                                  "not(../disable) and
    (../split-update-group/static or
     ../split-update-group/dynamic)";
                                presence
                                  "Indicates a enable node is configured.";
                                description
                                  "Enable slow peer detection";
                              }  // container enable
    
                              container disable {
                                must
                                  "not(../enable) and
    (../split-update-group/static or
     ../split-update-group/dynamic)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable slow peer detection";
                              }  // container disable
    
                              container split-update-group {
                                description
                                  "Options to split update group";
                                container static {
                                  must
                                    "not(../dynamic) and (../../enable or ../../disable)";
                                  presence
                                    "Indicates a static node is configured.";
                                  description
                                    "Manually move this peer to slow update group";
                                }  // container static
    
                                container dynamic {
                                  must
                                    "not(../static) and (../../enable or ../../disable)";
                                  presence
                                    "Indicates a dynamic node is configured.";
                                  description
                                    "Move peer to slow update group on detection";
                                  container permanent {
                                    must
                                      "not(../disable)";
                                    presence
                                      "Indicates a permanent node is configured.";
                                    description
                                      "Do not revert back peer on recovery";
                                  }  // container permanent
    
                                  container disable {
                                    must
                                      "not(../permanent)";
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable moving slow peer to updgrp";
                                  }  // container disable
                                }  // container dynamic
                              }  // container split-update-group
                            }  // container detection
                          }  // container slow-peer
    
                          container origin-as {
                            description
                              "BGP origin-AS knobs";
                            container validation {
                              description
                                "BGP origin-AS validation knobs";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable RPKI origin-AS validation";
                              }  // container disable
                            }  // container validation
                          }  // container origin-as
    
                          container bestpath {
                            description
                              "Change default route selection criteria";
                            container origin-as {
                              description
                                "BGP origin-AS knobs";
                              container allow {
                                description
                                  "BGP origin-AS knobs";
                                container invalid {
                                  presence
                                    "Indicates a invalid node is configured.";
                                  description
                                    "BGP bestpath selection will allow 'invalid' origin-AS";
                                }  // container invalid
                              }  // container allow
                            }  // container origin-as
                          }  // container bestpath
    
                          container route-policy {
                            description
                              "Apply route policy to neighbor";
                            leaf in {
                              type xr:Route-policy-name;
                              description
                                "Apply route policy to inbound routes";
                            }
    
                            leaf out {
                              type xr:Route-policy-name;
                              description
                                "Apply route policy to outbound routes";
                            }
                          }  // container route-policy
    
                          container orf {
                            description
                              "Specify ORF and inbound filtering criteria";
                            leaf route-policy {
                              type xr:Route-policy-name;
                              description
                                "Route policy to specify ORF and inbound filter";
                            }
                          }  // container orf
    
                          container remove-private-as {
                            presence
                              "Indicates a remove-private-as node is configured.";
                            description
                              "Remove private AS number from outbound updates";
                            container entire-aspath {
                              must
                                "not(../inheritance-disable or ../internal)";
                              presence
                                "Indicates a entire-aspath node is configured.";
                              description
                                "remove only if all ASes in the path are private";
                            }  // container entire-aspath
    
                            container inheritance-disable {
                              must
                                "not(../entire-aspath or ../internal)";
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent remove-private-AS from being inherited from the parent";
                            }  // container inheritance-disable
    
                            container internal {
                              must
                                "not(../entire-aspath or ../inheritance-disable)";
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "remove only if all ASes in the path are private";
                              container inheritance-disable {
                                presence
                                  "Indicates a inheritance-disable node is configured.";
                                description
                                  "Prevent remove-private-AS from being inherited from the parent";
                              }  // container inheritance-disable
                            }  // container internal
                          }  // container remove-private-as
    
                          container remove-private-as-inbound {
                            must
                              "not(entire-aspath and inheritance-disable)";
                            presence
                              "Indicates a inbound node is configured.";
                            description
                              "Remove private AS number from inbound updates";
                            container entire-aspath {
                              presence
                                "Indicates a entire-aspath node is configured.";
                              description
                                "remove only if all ASes in the path are private";
                            }  // container entire-aspath
    
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent remove-private-AS from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container remove-private-as-inbound
    
                          container enforce-multiple-labels {
                            presence
                              "Indicates a enforce-multiple-labels node is configured.";
                            description
                              "Enforce support for multiple labels (requires manual session flap)";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent enforce-multiple-labels from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container enforce-multiple-labels
    
                          container route-reflector-client {
                            presence
                              "Indicates a route-reflector-client node is configured.";
                            description
                              "Configure a neighbor as Route Reflector client";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent route-reflector-client from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container route-reflector-client
    
                          container accept-route-legacy-rt {
                            presence
                              "Indicates a accept-route-legacy-rt node is configured.";
                            description
                              "Configure a neighbor to support legacy PE for RT-Constraint AF";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent  accept-route-legacy-RT from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container accept-route-legacy-rt
    
                          container send-community-ebgp {
                            presence
                              "Indicates a send-community-ebgp node is configured.";
                            description
                              "Send community attribute to this external neighbor";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent send-community-ebgp from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container send-community-ebgp
    
                          container send-community-gshut-ebgp {
                            presence
                              "Indicates a send-community-gshut-ebgp node is configured.";
                            description
                              "Allow the g-shut community to be sent to this external neighbor";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent send-community-gshut-ebgp from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container send-community-gshut-ebgp
    
                          container send-extended-community-ebgp {
                            presence
                              "Indicates a send-extended-community-ebgp node is configured.";
                            description
                              "Send extended community attribute to this external neighbor";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent send-extended-community-ebgp from being inherited from parent";
                            }  // container inheritance-disable
                          }  // container send-extended-community-ebgp
    
                          container soft-reconfiguration {
                            description
                              "Per neighbor soft reconfiguration";
                            container inbound {
                              presence
                                "Indicates a inbound node is configured.";
                              description
                                "Allow inbound soft reconfiguration for this neighbor";
                              container rpki-dropped-only {
                                must
                                  "not(../rpki-tested-only or ../always or ../inheritance-disable)";
                                presence
                                  "Indicates a rpki-dropped-only node is configured.";
                                description
                                  "Use soft-reconfig, for paths dropped by route-policy which have RPKI validity state check";
                              }  // container rpki-dropped-only
    
                              container rpki-tested-only {
                                must
                                  "not(../rpki-dropped-only or ../always or ../inheritance-disable)";
                                presence
                                  "Indicates a rpki-tested-only node is configured.";
                                description
                                  "Use soft-reconfig for paths tested or dropped by route-policy which have RPKI validity state check";
                              }  // container rpki-tested-only
    
                              container always {
                                must
                                  "not(../rpki-dropped-only or ../rpki-tested-only or ../inheritance-disable)";
                                presence
                                  "Indicates a always node is configured.";
                                description
                                  "Always use soft reconfig, even if route refresh is supported";
                              }  // container always
    
                              container inheritance-disable {
                                must
                                  "not(../rpki-dropped-only or ../rpki-tested-only or ../always)";
                                presence
                                  "Indicates a inheritance-disable node is configured.";
                                description
                                  "Prevent soft-reconfiguration from being inherited from the parent";
                              }  // container inheritance-disable
                            }  // container inbound
                          }  // container soft-reconfiguration
    
                          container update {
                            description
                              "BGP out bound message";
                            container out {
                              description
                                "BGP out bound message handling";
                              container originator-loopcheck {
                                presence
                                  "Indicates a originator-loopcheck node is configured.";
                                description
                                  "Loop check for same originator which sent the route";
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable originator loop check";
                                }  // container disable
                              }  // container originator-loopcheck
                            }  // container out
                          }  // container update
    
                          container advertise {
                            description
                              "Per neighbor advertisement options";
                            container permanent-network {
                              presence
                                "Indicates a permanent-network node is configured.";
                              description
                                "Allow permanent networks for this neighbor";
                            }  // container permanent-network
    
                            container local-labeled-route {
                              presence
                                "Indicates a local-labeled-route node is configured.";
                              description
                                "Advertisement of routes with local-label";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Do not advertise routes with local-label via Unicast SAFI";
                              }  // container disable
                            }  // container local-labeled-route
                          }  // container advertise
    
                          leaf weight {
                            type uint32 {
                              range "0..65535";
                            }
                            description
                              "Set default weight for routes from this neighbor";
                          }
    
                          container allowas-in {
                            presence
                              "Indicates a allowas-in node is configured.";
                            description
                              "Allow as-path with my AS present in it";
                            leaf number-of-occurences {
                              type uint32 {
                                range "1..10";
                              }
                              description
                                "Number of occurences of AS number";
                            }
                          }  // container allowas-in
    
                          container long-lived-graceful-restart {
                            description
                              "Enable long lived graceful restart support";
                            container stale-time {
                              description
                                "Maximum time to wait before purging long-lived stale routes";
                              leaf send {
                                type uint32 {
                                  range
                                    "0..16777215";
                                }
                                description
                                  "Stale-time sent in LLGR Capability";
                              }
    
                              leaf accept {
                                type uint32 {
                                  range
                                    "0..16777215";
                                }
                                description
                                  "Maximum stale-time acceptable from neighbor";
                              }
                            }  // container stale-time
    
                            container capable {
                              presence
                                "Indicates a capable node is configured.";
                              description
                                "Treat neighbor as LLGR capable";
                            }  // container capable
                          }  // container long-lived-graceful-restart
    
                          container as-override {
                            presence
                              "Indicates a as-override node is configured.";
                            description
                              "Override matching AS-number while sending update";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent as-override from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container as-override
    
                          container aigp {
                            presence
                              "Indicates a aigp node is configured.";
                            description
                              "Enable AIGP for this neighbor ";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable AIGP";
                            }  // container disable
                          }  // container aigp
    
                          container aigp-send {
                            description
                              "Copy AIGP";
                            container cost-community {
                              description
                                "Send AIGP value in Cost Community";
                              leaf cost-community-id {
                                type uint32 {
                                  range "0..255";
                                }
                                must
                                  "not(../disable)";
                                description
                                  "Cost community ID";
                              }
    
                              container poi {
                                must
                                  "(igp-cost or pre-bestpath) and not(igp-cost and pre-bestpath)";
                                presence
                                  "Indicates a poi node is configured.";
                                description
                                  "Point of insertion for bestpath calculation";
                                container igp-cost {
                                  presence
                                    "Indicates a igp-cost node is configured.";
                                  description
                                    "Cost community is used after IGP distance to next hop";
                                  container transitive {
                                    presence
                                      "Indicates a transitive node is configured.";
                                    description
                                      "Enable transitive cost community";
                                  }  // container transitive
                                }  // container igp-cost
    
                                container pre-bestpath {
                                  presence
                                    "Indicates a pre-bestpath node is configured.";
                                  description
                                    "Cost community is first step in best path calculation";
                                  container transitive {
                                    presence
                                      "Indicates a transitive node is configured.";
                                    description
                                      "Enable transitive cost community";
                                  }  // container transitive
                                }  // container pre-bestpath
                              }  // container poi
    
                              container disable {
                                must
                                  "not(../cost-community-id)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable aigp send cost-community";
                              }  // container disable
                            }  // container cost-community
    
                            container med {
                              presence
                                "Indicates a med node is configured.";
                              description
                                "Send AIGP value in MED";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable aigp send med";
                              }  // container disable
                            }  // container med
                          }  // container aigp-send
    
                          container validation {
                            when
                              "../af-name = 'ipv4-flowspec' or ../af-name = 'ipv6-flowspec'";
                            presence
                              "Indicates a validation node is configured.";
                            description
                              "Flowspec Validation for this neighbor ";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable Flowspec Validation";
                            }  // container disable
    
                            container redirect {
                              description
                                "Flowspec Redirect nexthop Validation";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable Flowspec Redirect nexthop Validation";
                              }  // container disable
                            }  // container redirect
                          }  // container validation
    
                          container send-multicast-attributes {
                            when
                              "../af-name = 'ipv4-unicast' or ../af-name = 'ipv6-unicast' or ../af-name = 'ipv4-labeled-unicast' or ../af-name = 'ipv6-labeled-unicast' or ../af-name = 'ipv4-multicast' or ../af-name = 'ipv6-multicast' or ../af-name = 'ipv4-mvpn' or ../af-name = 'ipv6-mvpn'";
                            presence
                              "Indicates a send-multicast-attributes node is configured.";
                            description
                              "Send multicast attributes to this neighbor ";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable send multicast attribute";
                            }  // container disable
                          }  // container send-multicast-attributes
    
                          container signalling {
                            description
                              "Signalling protocols to disable, BGP or LDP";
                            container bgp {
                              description
                                "Select BGP to disable";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable Signalling type";
                              }  // container disable
                            }  // container bgp
    
                            container ldp {
                              description
                                "Select LDP to disable";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable Signalling type";
                              }  // container disable
                            }  // container ldp
                          }  // container signalling
    
                          container accept-own {
                            presence
                              "Indicates a accept-own node is configured.";
                            description
                              "Handle self-originated routes with Accept-Own community";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent item being inherited from a parent group";
                            }  // container inheritance-disable
                          }  // container accept-own
    
                          container cluster-id {
                            description
                              "Allow routes with first cluster-id in list is same as the router's cluster id";
                            container allow-equal {
                              presence
                                "Indicates a allow-equal node is configured.";
                              description
                                "Accept routes with first cluster-id in list is same as the router's cluster id";
                              container disable {
                                presence
                                  "Indicates a allow-equal node is configured.";
                                description
                                  "Prevent the configuration from being inherited.";
                              }  // container disable
                            }  // container allow-equal
                          }  // container cluster-id
    
                          container site-of-origin {
                            description
                              "Site-of-Origin extended community associated with the neighbor";
                            container two-byte-as {
                              must
                                "not(../four-byte-as or ../ip-address)";
                              presence
                                "Indicates a two-byte-as node is configured.";
                              leaf as-number {
                                type xr:Bgp-as-number;
                                mandatory true;
                                description
                                  "bgp as-number";
                              }
    
                              leaf index {
                                type uint32 {
                                  range
                                    "0..4294967295";
                                }
                                mandatory true;
                                description
                                  "ASN2:index (hex or decimal format)";
                              }
                            }  // container two-byte-as
    
                            container four-byte-as {
                              must
                                "not(../two-byte-as or ../ip-address)";
                              presence
                                "Indicates a four-byte-as node is configured.";
                              leaf as-number {
                                type xr:Bgp-as-number;
                                mandatory true;
                                description
                                  "4-byte AS number";
                              }
    
                              leaf index {
                                type uint32 {
                                  range
                                    "0..4294967295";
                                }
                                mandatory true;
                                description
                                  "ASN2:index (hex or decimal format)";
                              }
                            }  // container four-byte-as
    
                            container ip-address {
                              must
                                "not(../two-byte-as or ../four-byte-as)";
                              presence
                                "Indicates a ip-address node is configured.";
                              description
                                "configure this node";
                              leaf ipv4-address {
                                type inet:ipv4-address-no-zone;
                                mandatory true;
                                description
                                  "configure this node";
                              }
    
                              leaf index {
                                type uint32 {
                                  range
                                    "0..65535";
                                }
                                mandatory true;
                                description
                                  "IPv4Address:index (hex or decimal format)";
                              }
                            }  // container ip-address
                          }  // container site-of-origin
    
                          container multipath {
                            presence
                              "Indicates a multipath node is configured.";
                            description
                              "Paths from this neighbor is eligible for multipath";
                          }  // container multipath
                        }  // list address-family
                      }  // container address-families
    
                      container update {
                        description
                          "BGP Update configuration";
                        container in {
                          description
                            "Inbound update message handling";
                          container filtering {
                            presence
                              "Indicates a filtering node is configured.";
                            description
                              "Inbound update message filtering";
                            container message {
                              description
                                "Filtered update messages";
                              container buffers {
                                presence
                                  "Indicates a buffers node is configured.";
                                description
                                  "Filtered update message buffers";
                                leaf number-of-buffers {
                                  type uint32 {
                                    range
                                      "0..25";
                                  }
                                  mandatory
                                    true;
                                  description
                                    "Filtered update message buffers";
                                }
    
                                container non-circular {
                                  presence
                                    "Indicates a non-circular node is configured.";
                                  description
                                    "Message buffer list is not circular";
                                }  // container non-circular
                              }  // container buffers
                            }  // container message
    
                            container logging {
                              description
                                "Update filtering syslog message";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable update filtering syslog message";
                              }  // container disable
                            }  // container logging
    
                            container attribute-filter {
                              description
                                "Attribute-filter configuration";
                              leaf group {
                                type string {
                                  length
                                    "1..1024";
                                }
                                description
                                  "Attribute-filter group configuration";
                              }
                            }  // container attribute-filter
                          }  // container filtering
    
                          container merge {
                            description
                              "Merge incoming updates";
                            container safi {
                              description
                                "SAFI of the NLRIs to merge";
                              container unicast {
                                description
                                  "IPv4/IPv6 unicast paths";
                                container labeled-unicast {
                                  presence
                                    "Indicates a labeled-unicast node is configured.";
                                  description
                                    "IPv4/IPv6 labeled-unicast paths";
                                  container inheritance-disable {
                                    presence
                                      "Indicates a inheritance-disable node is configured.";
                                    description
                                      "Do not inherit this configuration from parent group";
                                  }  // container inheritance-disable
                                }  // container labeled-unicast
                              }  // container unicast
                            }  // container safi
                          }  // container merge
                        }  // container in
                      }  // container update
    
                      container graceful-maintenance {
                        presence
                          "Indicates a graceful-maintenance node is configured.";
                        description
                          "Attributes for Graceful Maintenance. This will cause
    neig de-prer routes from this router and
    choonates.his allows the router to be
    brour out  service gracefully.";
                        container local-preference {
                          must
                            "local-preference-value or inheritance-disable";
                          presence
                            "Indicates a local-preference node is configured.";
                          description
                            "local preference with which to advertise routes to ibgps. Deflt=No Touch";
                          leaf local-preference-value {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "Range of values for Local Preference";
                          }
    
                          container inheritance-disable {
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent local preference from being inherited from the parent";
                          }  // container inheritance-disable
                        }  // container local-preference
    
                        container as-prepends {
                          must
                            "number-of-as-prepends or inheritance-disable";
                          presence
                            "Indicates a as-prepends node is configured.";
                          description
                            "Number of times to prepend the local AS number to the
    AS poutes.efault=0";
                          leaf number-of-as-prepends {
                            type uint32 {
                              range "0..6";
                            }
                            description
                              "Range of number of AS prepends";
                          }
    
                          container inheritance-disable {
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent AS prepends from being inherited from the parent";
                          }  // container inheritance-disable
                        }  // container as-prepends
    
                        container activate {
                          presence
                            "Indicates a activate node is configured.";
                          description
                            "Routes will be announced with the graceful maintenance
    attrhile aivated either here or under router
    bgp ation.hile activated, all routes to this
    neigl be aounced with the attributes
    confere anall routes from this neighbor will
    be a to otr neighbors with the graceful
    mainattribes configured under those
    neighe g-st community will be announced
    regaf the her attributes configured here. To
    alloshut cmunity to be announced to ebgp
    neighe sencommunity-gshut-ebgp configuration
    is aired. te: changes to the attributes will
    not ect whe activated.";
                          container inheritance-disable {
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent activate from being inherited from the parent";
                          }  // container inheritance-disable
                        }  // container activate
                      }  // container graceful-maintenance
    
                      leaf remote-as {
                        type xr:Bgp-as-number;
                        description
                          "bgp as-number";
                      }
    
                      leaf remote-as-list {
                        type string {
                          length "1..1024";
                        }
                        description
                          "Remote as-list configuration";
                      }
    
                      container use {
                        description
                          "Inherit configuration from a group";
                        leaf session-group {
                          type string {
                            length "1..1024";
                          }
                          description
                            "Inherit address-family independent config from a session-group";
                        }
    
                        leaf neighbor-group {
                          type string {
                            length "1..1024";
                          }
                          description
                            "Inherit configuration from a neighbor-group";
                        }
                      }  // container use
    
                      container advertisement-interval {
                        presence
                          "Indicates a advertisement-interval node is configured.";
                        description
                          "Minimum interval between sending BGP routing updates";
                        leaf time-in-seconds {
                          type uint32 {
                            range "0..600";
                          }
                          mandatory true;
                          description
                            "Minimum interval between sending BGP routing updates";
                        }
    
                        leaf time-in-milliseconds {
                          type uint32 {
                            range "0..999";
                          }
                          description
                            "time in milliseconds";
                        }
                      }  // container advertisement-interval
    
                      leaf description {
                        type string {
                          length "1..1024";
                        }
                        description
                          "Neighbor specific description";
                      }
    
                      container ignore-connected-check {
                        presence
                          "Indicates a ignore-connected-check node is configured.";
                        description
                          "Bypass the directly connected nexthop check for single-hop eBGP peering";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent ignore-connected-check from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container ignore-connected-check
    
                      container internal-vpn-client {
                        presence
                          "Indicates a internal-vpn-client node is configured.";
                        description
                          "Preserve iBGP CE neighbor path in ATTR_SET across VPN core";
                      }  // container internal-vpn-client
    
                      container ebgp-multihop {
                        presence
                          "Indicates a ebgp-multihop node is configured.";
                        description
                          "Allow EBGP neighbors not on directly connected networks";
                        leaf maximum-hop-count {
                          type uint32 {
                            range "1..255";
                          }
                          mandatory true;
                          description
                            "maximum hop count";
                        }
    
                        container mpls {
                          presence
                            "Indicates a mpls node is configured.";
                          description
                            "Disable BGP MPLS forwarding";
                        }  // container mpls
                      }  // container ebgp-multihop
    
                      container tcp {
                        description
                          "TCP session configuration commands";
                        container mss {
                          must
                            "initial-mss or inheritance-disable";
                          presence
                            "Indicates a mss node is configured.";
                          description
                            "Maximum Segment Size";
                          leaf initial-mss {
                            type uint32 {
                              range "68..10000";
                            }
                            description
                              "TCP initial maximum segment size";
                          }
    
                          container inheritance-disable {
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent tcp mss from being inherited from the parent";
                          }  // container inheritance-disable
                        }  // container mss
                      }  // container tcp
    
                      container bmp-activate {
                        description
                          "Enable BMP logging for this neighbor";
                        container servers {
                          description
                            "Enable BMP connection to particular server";
                          list server {
                            key "server-id";
                            description
                              "Enable BMP connection to particular server";
                            leaf server-id {
                              type uint32 {
                                range "1..8";
                              }
                              description
                                "Enable BMP connection to particular server";
                            }
                          }  // list server
                        }  // container servers
                      }  // container bmp-activate
    
                      container bfd {
                        description
                          "Configure BFD parameters";
                        container fast-detect {
                          must
                            "not(strict-mode and disable)";
                          presence
                            "Indicates a fast-detect node is configured.";
                          description
                            "Enable Fast detection";
                          container strict-mode {
                            presence
                              "Indicates a strict-mode node is configured.";
                            description
                              "Hold down neighbor session until BFD session is up";
                          }  // container strict-mode
    
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Prevent bfd settings from being inherited from the parent";
                          }  // container disable
                        }  // container fast-detect
    
                        leaf minimum-interval {
                          type uint32 {
                            range "3..30000";
                          }
                          description
                            "Hello interval";
                        }
    
                        leaf multiplier {
                          type uint32 {
                            range "2..16";
                          }
                          description
                            "Detect multiplier";
                        }
                      }  // container bfd
    
                      container keychain {
                        must
                          "name or inheritance-disable";
                        presence
                          "Indicates a keychain node is configured.";
                        description
                          "Set keychain based authentication";
                        leaf name {
                          type string {
                            length "1..32";
                          }
                          description
                            "Name of the key chain - maximum 32 characters";
                        }
    
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent keychain from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container keychain
    
                      container local-as {
                        must
                          "as-number or inheritance-disable";
                        presence
                          "Indicates a local-as node is configured.";
                        description
                          "Specify local AS number";
                        leaf as-number {
                          type xr:Bgp-as-number;
                          description
                            "bgp as-number";
                        }
    
                        container no-prepend {
                          presence
                            "Indicates a no-prepend node is configured.";
                          description
                            "Do not prepend local AS to announcements from this neighbor";
                          container replace-as {
                            presence
                              "Indicates a replace-as node is configured.";
                            description
                              "Prepend only local AS to announcements to this neighbor";
                            container dual-as {
                              presence
                                "Indicates a dual-as node is configured.";
                              description
                                "Dual-AS mode";
                            }  // container dual-as
                          }  // container replace-as
                        }  // container no-prepend
    
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent local AS from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container local-as
    
                      container password {
                        must
                          "encrypted or inheritance-disable";
                        presence
                          "Indicates a password node is configured.";
                        description
                          "Set a password";
                        leaf encrypted {
                          type xr:Proprietary-password;
                          description
                            "Specifies an ENCRYPTED password will follow";
                        }
    
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent password from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container password
    
                      container receive-buffer-size {
                        presence
                          "Indicates a receive-buffer-size node is configured.";
                        description
                          "Set socket and BGP receive buffer size";
                        leaf receive-socket-buffer-size {
                          type uint32 {
                            range "512..131072";
                          }
                          mandatory true;
                          description
                            "Set socket and BGP receive buffer size";
                        }
    
                        leaf bgp-read-buffer-size {
                          type uint32 {
                            range "512..131072";
                          }
                          description
                            "BGP Read buffer size in bytes";
                        }
                      }  // container receive-buffer-size
    
                      container send-buffer-size {
                        presence
                          "Indicates a send-buffer-size node is configured.";
                        description
                          "Set socket and BGP send buffer size";
                        leaf send-socket-buffer-size {
                          type uint32 {
                            range "4096..131072";
                          }
                          mandatory true;
                          description
                            "Set socket and BGP send buffer size";
                        }
    
                        leaf bgp-write-buffer-size {
                          type uint32 {
                            range "4096..131072";
                          }
                          description
                            "BGP Write buffer size in bytes";
                        }
                      }  // container send-buffer-size
    
                      container shutdown {
                        presence
                          "Indicates a shutdown node is configured.";
                        description
                          "Administratively shut down this neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent this neighbor being shutdown, even if its parent is";
                        }  // container inheritance-disable
                      }  // container shutdown
    
                      container timers {
                        presence
                          "Indicates a timers node is configured.";
                        description
                          "BGP per neighbor timers";
                        leaf keepalive-interval {
                          type uint32 {
                            range "0..65535";
                          }
                          mandatory true;
                          description
                            "BGP timers";
                        }
    
                        leaf holdtime {
                          type union {
                            type uint32 {
                              range "0";
                            }
                            type uint32 {
                              range "3..65535";
                            }
                          }
                          mandatory true;
                          description
                            "Holdtime. Set 0 to disable keepalives/hold time.";
                        }
    
                        leaf minimum-acceptable-holdtime {
                          type union {
                            type uint32 {
                              range "0";
                            }
                            type uint32 {
                              range "3..65535";
                            }
                          }
                          description
                            "Minimum acceptable holdtime from neighbor. Set 0 to disable keepalives/hold time.";
                        }
                      }  // container timers
    
                      container local {
                        description
                          "Configure local parameter";
                        container address {
                          must
                            "ip-address or inheritance-disable";
                          presence
                            "Indicates a address node is configured.";
                          description
                            "use configured local address for bgp peering";
                          leaf ip-address {
                            type inet:ip-address-no-zone;
                            description
                              "IPv4 address";
                          }
    
                          container inheritance-disable {
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent local address from being inherited from parent";
                          }  // container inheritance-disable
                        }  // container address
                      }  // container local
    
                      container log {
                        description
                          "Logging update messages per neighbor";
                        container message {
                          description
                            "Logging update/notification messages per neighbor";
                          container in {
                            description
                              "Inbound log messages";
                            leaf message-log-buffer-size {
                              type uint32 {
                                range "1..500";
                              }
                              description
                                "Range for message log buffer size";
                            }
    
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable inbound message logging";
                            }  // container disable
    
                            container inheritance-diable {
                              presence
                                "Indicates a inheritance-diable node is configured.";
                              description
                                "Prevents the msg log from being inherited from the parent";
                            }  // container inheritance-diable
                          }  // container in
    
                          container out {
                            description
                              "Outbound log messages";
                            leaf range-for-message-log-buffer {
                              type uint32 {
                                range "1..100";
                              }
                              description
                                "Range for message log buffer size";
                            }
    
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable outbound message logging";
                            }  // container disable
    
                            container inheritance-diable {
                              presence
                                "Indicates a inheritance-diable node is configured.";
                              description
                                "Prevents the msg log from being inherited from the parent";
                            }  // container inheritance-diable
                          }  // container out
                        }  // container message
                      }  // container log
    
                      leaf update-source {
                        type xr:Interface-name;
                        description
                          "Source of routing updates";
                      }
    
                      container local-address-subnet {
                        description
                          "Local address subnet of routing updates";
                        leaf ip-address {
                          type inet:ip-address-no-zone;
                          description
                            "IP address and mask or masklength";
                        }
    
                        leaf mask-length {
                          type uint32 {
                            range "0..128";
                          }
                          description
                            "IP address and mask length";
                        }
                      }  // container local-address-subnet
    
                      container dmz-link-bandwidth {
                        presence
                          "Indicates a dmz-link-bandwidth node is configured.";
                        description
                          "Propagate the DMZ link bandwidth";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent dmz-link-bandwidth from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container dmz-link-bandwidth
    
                      container ebgp-recv-extcommunity-dmz {
                        presence
                          "Indicates a ebgp-recv-extcommunity-dmz node is configured.";
                        description
                          "Receive extcommunity dmz link bandwidth from ebgp neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent ebgp-send-community-dmz from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container ebgp-recv-extcommunity-dmz
    
                      container ebgp-send-extcommunity-dmz {
                        must
                          "not(cumulative and inheritance-disable)";
                        presence
                          "Indicates a ebgp-send-extcommunity-dmz node is configured.";
                        description
                          "Send extended community dmz link bandwidth to ebgp neighbor";
                        container cumulative {
                          presence
                            "Indicates a cumulative node is configured.";
                          description
                            "Send cumulative community dmz link bandwidth of all multipaths to ebgp neighbor";
                        }  // container cumulative
    
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent ebgp-send-extcommunity-dmz from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container ebgp-send-extcommunity-dmz
    
                      container ttl-security {
                        presence
                          "Indicates a ttl-security node is configured.";
                        description
                          "Enable EBGP TTL security";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent ttl-security from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container ttl-security
    
                      container session-open-mode {
                        description
                          "Establish BGP session using this TCP open mode";
                        container active-only {
                          must
                            "not(../passive-only or ../both)";
                          presence
                            "Indicates a active-only node is configured.";
                          description
                            "Active only";
                        }  // container active-only
    
                        container passive-only {
                          must
                            "not(../active-only or ../both)";
                          presence
                            "Indicates a passive-only node is configured.";
                          description
                            "Passive only";
                        }  // container passive-only
    
                        container both {
                          must
                            "not(../active-only or ../passive-only)";
                          presence
                            "Indicates a both node is configured.";
                          description
                            "Prevent session-open-mode being inherited from the parent";
                        }  // container both
                      }  // container session-open-mode
    
                      leaf dscp {
                        type enumeration {
                          enum "default" {
                            value 0;
                            description
                              "Set packets with default dscp (000000)";
                          }
                          enum "cs1" {
                            value 8;
                            description
                              "Set packets with CS1(precedence 1) dscp (001000)";
                          }
                          enum "af11" {
                            value 10;
                            description
                              "Set packets with AF11 dscp (001010)";
                          }
                          enum "af12" {
                            value 12;
                            description
                              "Set packets with AF12 dscp (001100)";
                          }
                          enum "af13" {
                            value 14;
                            description
                              "Set packets with AF13 dscp (001110)";
                          }
                          enum "cs2" {
                            value 16;
                            description
                              "Set packets with CS2(precedence 2) dscp (010000)";
                          }
                          enum "af21" {
                            value 18;
                            description
                              "Set packets with AF21 dscp (010010)";
                          }
                          enum "af22" {
                            value 20;
                            description
                              "Set packets with AF22 dscp (010100)";
                          }
                          enum "af23" {
                            value 22;
                            description
                              "Set packets with AF23 dscp (010110)";
                          }
                          enum "cs3" {
                            value 24;
                            description
                              "Set packets with CS3(precedence 3) dscp (011000)";
                          }
                          enum "af31" {
                            value 26;
                            description
                              "Set packets with AF31 dscp (011010)";
                          }
                          enum "af32" {
                            value 28;
                            description
                              "Set packets with AF32 dscp (011100)";
                          }
                          enum "af33" {
                            value 30;
                            description
                              "Set packets with AF33 dscp (011110)";
                          }
                          enum "cs4" {
                            value 32;
                            description
                              "Set packets with CS4(precedence 4) dscp (100000)";
                          }
                          enum "af41" {
                            value 34;
                            description
                              "Set packets with AF41 dscp (100010)";
                          }
                          enum "af42" {
                            value 36;
                            description
                              "Set packets with AF42 dscp (100100)";
                          }
                          enum "af43" {
                            value 38;
                            description
                              "Set packets with AF43 dscp (100110)";
                          }
                          enum "cs5" {
                            value 40;
                            description
                              "Set packets with CS5(precedence 5) dscp (101000)";
                          }
                          enum "ef" {
                            value 46;
                            description
                              "Set packets with EF dscp (101110)";
                          }
                          enum "cs6" {
                            value 48;
                            description
                              "Set packets with CS6(precedence 6) dscp (110000)";
                          }
                          enum "cs7" {
                            value 56;
                            description
                              "Set packets with CS7(precedence 7) dscp (111000)";
                          }
                        }
                        description
                          "Set IP DSCP (DiffServ CodePoint)";
                      }
    
                      leaf precedence {
                        type enumeration {
                          enum "routine" {
                            value 0;
                            description
                              "Set packets with routine precedence (0)";
                          }
                          enum "priority" {
                            value 1;
                            description
                              "Set packets with priority precedence (1)";
                          }
                          enum "immediate" {
                            value 2;
                            description
                              "Set packets with immediate precedence (2)";
                          }
                          enum "flash" {
                            value 3;
                            description
                              "Set packets with flash precedence (3)";
                          }
                          enum "flash-override" {
                            value 4;
                            description
                              "Set packets with flash override precedence (4)";
                          }
                          enum "critical" {
                            value 5;
                            description
                              "Set packets with critical precedence (5)";
                          }
                          enum "internet" {
                            value 6;
                            description
                              "Set packets with internetwork control precedence (6)";
                          }
                          enum "network" {
                            value 7;
                            description
                              "Set packets with network control precedence (7)";
                          }
                        }
                        description
                          "Set precedence";
                      }
    
                      container capability {
                        description
                          "Advertise capability to the peer";
                        container suppress {
                          description
                            "Suppress advertising capability to the peer ";
                          container four-byte-as {
                            presence
                              "Indicates a four-byte-as node is configured.";
                            description
                              "4-byte-as capability";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent capability suppress 4-type-as being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container four-byte-as
    
                          container all {
                            presence
                              "Indicates a all node is configured.";
                            description
                              "All capabilities";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Do not inherit this configuration from parent group";
                            }  // container inheritance-disable
                          }  // container all
    
                          container extended-nexthop-encoding {
                            presence
                              "Indicates a extended-nexthop-encoding node is configured.";
                            description
                              "Extended-nexthop-encoding capabilities (IETF RFC 5549)";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Do not inherit this configuration from parent group";
                            }  // container inheritance-disable
                          }  // container extended-nexthop-encoding
                        }  // container suppress
    
                        container additional-paths {
                          description
                            "Additional paths capability";
                          container send {
                            presence
                              "Indicates a send node is configured.";
                            description
                              "Additional paths Send capability";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Do not advertise additional paths Send capability";
                            }  // container disable
                          }  // container send
    
                          container receive {
                            presence
                              "Indicates a receive node is configured.";
                            description
                              "Additional paths Receive capability";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Do not advertise additional paths Receive capability";
                            }  // container disable
                          }  // container receive
                        }  // container additional-paths
                      }  // container capability
    
                      container graceful-restart {
                        presence
                          "Indicates a graceful-restart node is configured.";
                        description
                          "Enable graceful restart support for this neighbor";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable graceful restart support for this neighbor";
                        }  // container disable
    
                        leaf restart-time {
                          type uint32 {
                            range "1..4095";
                          }
                          description
                            "Restart time advertised to the neighbor";
                        }
    
                        leaf stalepath-time {
                          type uint32 {
                            range "1..4095";
                          }
                          description
                            "Maximum time to wait for restart of GR capable peer";
                        }
                      }  // container graceful-restart
    
                      container enforce-first-as {
                        presence
                          "Indicates a enforce-first-as node is configured.";
                        description
                          "Enforce the first AS for EBGP routes";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Do not enforce the first AS for EBGP routes";
                        }  // container disable
                      }  // container enforce-first-as
    
                      container enforce-first-as-disable {
                        presence
                          "Indicates a enforce-first-as-disable node is configured.";
                        description
                          "Do not enforce the first AS for EBGP routes";
                      }  // container enforce-first-as-disable
    
                      leaf maximum-peers {
                        type uint32 {
                          range "1..4095";
                        }
                        description
                          "Maximum dynamic neighbors";
                      }
    
                      leaf idle-watch-time {
                        type uint32 {
                          range "30..1800";
                        }
                        description
                          "Maximum time to wait for deletion of IDLE state dynamic peer";
                      }
    
                      container egress-engineering {
                        presence
                          "Indicates a egress-engineering node is configured.";
                        description
                          "Enable egress peer engineering for this neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Do not inherit egress-engineering from the parent";
                        }  // container inheritance-disable
                      }  // container egress-engineering
    
                      container peer-sets {
                        description
                          "Assign this neighbor to a peer-set used for egress peer engineering";
                        list peer-set {
                          key "peer-set-id";
                          description
                            "Assign this neighbor to a peer-set used for egress peer engineering";
                          leaf peer-set-id {
                            type uint32 {
                              range "1..255";
                            }
                            description
                              "Assign this neighbor to a peer-set used for egress peer engineering";
                          }
                        }  // list peer-set
                      }  // container peer-sets
    
                      container peer-node-sid {
                        description
                          "Assign this neighbor a manual SID for egress peer engineering";
                        leaf index {
                          type uint32 {
                            range "0..1033575";
                          }
                          description
                            "Segment Index value which is offset of SRLB";
                        }
                      }  // container peer-node-sid
    
                      container ao {
                        description
                          "Enable Authentiation Option";
                        leaf key-chain-name {
                          type string {
                            length "1..32";
                          }
                          must
                            "not(../inheritance-disable) and (../include-tcp-options/enable or ../include-tcp-options/disable)";
                          description
                            "Name of the key chain - maximum 32 characters";
                        }
    
                        container include-tcp-options {
                          description
                            "Include/Exclude other TCP options in the header";
                          container enable {
                            must
                              "not(../disable or ../../inheritance-disable)";
                            presence
                              "Indicates a enable node is configured.";
                            description
                              "Include other TCP options in the header";
                          }  // container enable
    
                          container disable {
                            must
                              "not(../enable or ../../inheritance-disable)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Exclude other TCP options in the header";
                          }  // container disable
    
                          container accept-ao-mismatch-connection {
                            must
                              "../enable or ../disable";
                            presence
                              "Indicates a accept-ao-mismatch-connection node is configured.";
                            description
                              "Accept new connection even if AO mismatched";
                          }  // container accept-ao-mismatch-connection
                        }  // container include-tcp-options
    
                        container inheritance-disable {
                          must
                            "not(../key-chain-name)";
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent keychain from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container ao
    
                      container origin-as {
                        description
                          "BGP origin-AS knobs";
                        container validation {
                          description
                            "BGP origin-AS validation knobs";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable RPKI origin-AS validation";
                          }  // container disable
                        }  // container validation
                      }  // container origin-as
    
                      container bestpath {
                        description
                          "Change default route selection criteria";
                        container origin-as {
                          description
                            "BGP origin-AS knobs";
                          container allow {
                            description
                              "BGP origin-AS knobs";
                            container invalid {
                              presence
                                "Indicates a invalid node is configured.";
                              description
                                "BGP bestpath selection will allow 'invalid' origin-AS";
                            }  // container invalid
                          }  // container allow
                        }  // container origin-as
                      }  // container bestpath
                    }  // list neighbor
    
                    list neighbor-range {
                      key "neighbor-address prefix-length";
                      description
                        "Neighbor address";
                      leaf neighbor-address {
                        type inet:ip-address-no-zone;
                        description
                          "Neighbor address";
                      }
    
                      leaf prefix-length {
                        type uint32 {
                          range "0..127";
                        }
                        description
                          "Prefix length";
                      }
    
                      container address-families {
                        description
                          "Enter Address Family command mode";
                        list address-family {
                          key "af-name";
                          description
                            "Enter Address Family command mode";
                          leaf af-name {
                            type Bgp-address-family;
                            description
                              "Enter Address Family command mode";
                          }
    
                          container use {
                            description
                              "Inherit configuration for this address-family from a group";
                            leaf af-group {
                              type string {
                                length "1..1024";
                              }
                              description
                                "Inherit configuration for this address-family from an af-group";
                            }
                          }  // container use
    
                          container capability {
                            description
                              "Advertise capability to the peer";
                            container orf {
                              description
                                "Advertise ORF capability to the peer";
                              container prefix {
                                description
                                  "Advertise address prefix ORF capability to this neighbor";
                                container receive {
                                  must
                                    "not(../send or ../both or ../none)";
                                  presence
                                    "Indicates a receive node is configured.";
                                  description
                                    "Capability to RECEIVE the ORF from this neighbor";
                                }  // container receive
    
                                container send {
                                  must
                                    "not(../receive or ../both or ../none)";
                                  presence
                                    "Indicates a send node is configured.";
                                  description
                                    "Capability to SEND the ORF to this neighbor";
                                }  // container send
    
                                container both {
                                  must
                                    "not(../receive or ../send or ../none)";
                                  presence
                                    "Indicates a both node is configured.";
                                  description
                                    "Capability to RECEIVE and SEND the ORF from/to this neighbor";
                                }  // container both
    
                                container none {
                                  must
                                    "not(../receive or ../send or ../both)";
                                  presence
                                    "Indicates a none node is configured.";
                                  description
                                    "No capability to RECEIVE or SEND the ORF from/to this neighbor";
                                }  // container none
                              }  // container prefix
                            }  // container orf
                          }  // container capability
    
                          container default-originate {
                            presence
                              "Indicates a default-originate node is configured.";
                            description
                              "Originate default route to this neighbor";
                            leaf route-policy {
                              type xr:Route-policy-name;
                              description
                                "Route policy to specify criteria to originate default";
                            }
    
                            container inheritance-disable {
                              must
                                "not(../route-policy)";
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent default-originate being inherited from a parent group";
                            }  // container inheritance-disable
                          }  // container default-originate
    
                          container maximum-prefix {
                            presence
                              "Indicates a maximum-prefix node is configured.";
                            description
                              "Maximum number of prefixes to accept from this peer";
                            leaf prefix-limit {
                              type uint32 {
                                range
                                  "1..4294967295";
                              }
                              mandatory true;
                              description
                                "Maximum number of prefixes to accept from this peer";
                            }
    
                            leaf threshold {
                              type uint32 {
                                range "1..100";
                              }
                              mandatory true;
                              description
                                "Threshold value (%) at which to generate a warning msg";
                            }
    
                            container warning-only {
                              presence
                                "Indicates a warning-only node is configured.";
                              description
                                "Only give warning message when limit is exceeded";
                            }  // container warning-only
    
                            leaf restart {
                              type uint32 {
                                range "1..65535";
                              }
                              description
                                "Restart time interval";
                            }
    
                            container discard-extra-paths {
                              presence
                                "Indicates a discard-extra-paths node is configured.";
                              description
                                "Discard extra paths when limit is exceeded";
                            }  // container discard-extra-paths
                          }  // container maximum-prefix
    
                          leaf optimal-route-reflection {
                            type string {
                              length "1..32";
                            }
                            description
                              "Configure optiomal-route-reflection for this neighbor";
                          }
    
                          container next-hop-self {
                            presence
                              "Indicates a next-hop-self node is configured.";
                            description
                              "Disable the next hop calculation for this neighbor";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent next-hop-self from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container next-hop-self
    
                          container next-hop-unchanged {
                            presence
                              "Indicates a next-hop-unchanged node is configured.";
                            description
                              "Do not overwrite next hop before advertising to eBGP peers";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent next-hop-unchanged from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container next-hop-unchanged
    
                          container slow-peer {
                            description
                              "configuration commands for slow-peer";
                            container detection {
                              description
                                "Enable or disable slow peer detection.";
                              container enable {
                                must
                                  "not(../disable) and
    (../split-update-group/static or
     ../split-update-group/dynamic)";
                                presence
                                  "Indicates a enable node is configured.";
                                description
                                  "Enable slow peer detection";
                              }  // container enable
    
                              container disable {
                                must
                                  "not(../enable) and
    (../split-update-group/static or
     ../split-update-group/dynamic)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable slow peer detection";
                              }  // container disable
    
                              container split-update-group {
                                description
                                  "Options to split update group";
                                container static {
                                  must
                                    "not(../dynamic) and (../../enable or ../../disable)";
                                  presence
                                    "Indicates a static node is configured.";
                                  description
                                    "Manually move this peer to slow update group";
                                }  // container static
    
                                container dynamic {
                                  must
                                    "not(../static) and (../../enable or ../../disable)";
                                  presence
                                    "Indicates a dynamic node is configured.";
                                  description
                                    "Move peer to slow update group on detection";
                                  container permanent {
                                    must
                                      "not(../disable)";
                                    presence
                                      "Indicates a permanent node is configured.";
                                    description
                                      "Do not revert back peer on recovery";
                                  }  // container permanent
    
                                  container disable {
                                    must
                                      "not(../permanent)";
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable moving slow peer to updgrp";
                                  }  // container disable
                                }  // container dynamic
                              }  // container split-update-group
                            }  // container detection
                          }  // container slow-peer
    
                          container origin-as {
                            description
                              "BGP origin-AS knobs";
                            container validation {
                              description
                                "BGP origin-AS validation knobs";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable RPKI origin-AS validation";
                              }  // container disable
                            }  // container validation
                          }  // container origin-as
    
                          container bestpath {
                            description
                              "Change default route selection criteria";
                            container origin-as {
                              description
                                "BGP origin-AS knobs";
                              container allow {
                                description
                                  "BGP origin-AS knobs";
                                container invalid {
                                  presence
                                    "Indicates a invalid node is configured.";
                                  description
                                    "BGP bestpath selection will allow 'invalid' origin-AS";
                                }  // container invalid
                              }  // container allow
                            }  // container origin-as
                          }  // container bestpath
    
                          container route-policy {
                            description
                              "Apply route policy to neighbor";
                            leaf in {
                              type xr:Route-policy-name;
                              description
                                "Apply route policy to inbound routes";
                            }
    
                            leaf out {
                              type xr:Route-policy-name;
                              description
                                "Apply route policy to outbound routes";
                            }
                          }  // container route-policy
    
                          container orf {
                            description
                              "Specify ORF and inbound filtering criteria";
                            leaf route-policy {
                              type xr:Route-policy-name;
                              description
                                "Route policy to specify ORF and inbound filter";
                            }
                          }  // container orf
    
                          container remove-private-as {
                            presence
                              "Indicates a remove-private-as node is configured.";
                            description
                              "Remove private AS number from outbound updates";
                            container entire-aspath {
                              must
                                "not(../inheritance-disable or ../internal)";
                              presence
                                "Indicates a entire-aspath node is configured.";
                              description
                                "remove only if all ASes in the path are private";
                            }  // container entire-aspath
    
                            container inheritance-disable {
                              must
                                "not(../entire-aspath or ../internal)";
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent remove-private-AS from being inherited from the parent";
                            }  // container inheritance-disable
    
                            container internal {
                              must
                                "not(../entire-aspath or ../inheritance-disable)";
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "remove only if all ASes in the path are private";
                              container inheritance-disable {
                                presence
                                  "Indicates a inheritance-disable node is configured.";
                                description
                                  "Prevent remove-private-AS from being inherited from the parent";
                              }  // container inheritance-disable
                            }  // container internal
                          }  // container remove-private-as
    
                          container remove-private-as-inbound {
                            must
                              "not(entire-aspath and inheritance-disable)";
                            presence
                              "Indicates a inbound node is configured.";
                            description
                              "Remove private AS number from inbound updates";
                            container entire-aspath {
                              presence
                                "Indicates a entire-aspath node is configured.";
                              description
                                "remove only if all ASes in the path are private";
                            }  // container entire-aspath
    
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent remove-private-AS from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container remove-private-as-inbound
    
                          container enforce-multiple-labels {
                            presence
                              "Indicates a enforce-multiple-labels node is configured.";
                            description
                              "Enforce support for multiple labels (requires manual session flap)";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent enforce-multiple-labels from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container enforce-multiple-labels
    
                          container route-reflector-client {
                            presence
                              "Indicates a route-reflector-client node is configured.";
                            description
                              "Configure a neighbor as Route Reflector client";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent route-reflector-client from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container route-reflector-client
    
                          container accept-route-legacy-rt {
                            presence
                              "Indicates a accept-route-legacy-rt node is configured.";
                            description
                              "Configure a neighbor to support legacy PE for RT-Constraint AF";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent  accept-route-legacy-RT from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container accept-route-legacy-rt
    
                          container send-community-ebgp {
                            presence
                              "Indicates a send-community-ebgp node is configured.";
                            description
                              "Send community attribute to this external neighbor";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent send-community-ebgp from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container send-community-ebgp
    
                          container send-community-gshut-ebgp {
                            presence
                              "Indicates a send-community-gshut-ebgp node is configured.";
                            description
                              "Allow the g-shut community to be sent to this external neighbor";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent send-community-gshut-ebgp from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container send-community-gshut-ebgp
    
                          container send-extended-community-ebgp {
                            presence
                              "Indicates a send-extended-community-ebgp node is configured.";
                            description
                              "Send extended community attribute to this external neighbor";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent send-extended-community-ebgp from being inherited from parent";
                            }  // container inheritance-disable
                          }  // container send-extended-community-ebgp
    
                          container soft-reconfiguration {
                            description
                              "Per neighbor soft reconfiguration";
                            container inbound {
                              presence
                                "Indicates a inbound node is configured.";
                              description
                                "Allow inbound soft reconfiguration for this neighbor";
                              container rpki-dropped-only {
                                must
                                  "not(../rpki-tested-only or ../always or ../inheritance-disable)";
                                presence
                                  "Indicates a rpki-dropped-only node is configured.";
                                description
                                  "Use soft-reconfig, for paths dropped by route-policy which have RPKI validity state check";
                              }  // container rpki-dropped-only
    
                              container rpki-tested-only {
                                must
                                  "not(../rpki-dropped-only or ../always or ../inheritance-disable)";
                                presence
                                  "Indicates a rpki-tested-only node is configured.";
                                description
                                  "Use soft-reconfig for paths tested or dropped by route-policy which have RPKI validity state check";
                              }  // container rpki-tested-only
    
                              container always {
                                must
                                  "not(../rpki-dropped-only or ../rpki-tested-only or ../inheritance-disable)";
                                presence
                                  "Indicates a always node is configured.";
                                description
                                  "Always use soft reconfig, even if route refresh is supported";
                              }  // container always
    
                              container inheritance-disable {
                                must
                                  "not(../rpki-dropped-only or ../rpki-tested-only or ../always)";
                                presence
                                  "Indicates a inheritance-disable node is configured.";
                                description
                                  "Prevent soft-reconfiguration from being inherited from the parent";
                              }  // container inheritance-disable
                            }  // container inbound
                          }  // container soft-reconfiguration
    
                          container update {
                            description
                              "BGP out bound message";
                            container out {
                              description
                                "BGP out bound message handling";
                              container originator-loopcheck {
                                presence
                                  "Indicates a originator-loopcheck node is configured.";
                                description
                                  "Loop check for same originator which sent the route";
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable originator loop check";
                                }  // container disable
                              }  // container originator-loopcheck
                            }  // container out
                          }  // container update
    
                          container advertise {
                            description
                              "Per neighbor advertisement options";
                            container permanent-network {
                              presence
                                "Indicates a permanent-network node is configured.";
                              description
                                "Allow permanent networks for this neighbor";
                            }  // container permanent-network
    
                            container local-labeled-route {
                              presence
                                "Indicates a local-labeled-route node is configured.";
                              description
                                "Advertisement of routes with local-label";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Do not advertise routes with local-label via Unicast SAFI";
                              }  // container disable
                            }  // container local-labeled-route
                          }  // container advertise
    
                          leaf weight {
                            type uint32 {
                              range "0..65535";
                            }
                            description
                              "Set default weight for routes from this neighbor";
                          }
    
                          container allowas-in {
                            presence
                              "Indicates a allowas-in node is configured.";
                            description
                              "Allow as-path with my AS present in it";
                            leaf number-of-occurences {
                              type uint32 {
                                range "1..10";
                              }
                              description
                                "Number of occurences of AS number";
                            }
                          }  // container allowas-in
    
                          container long-lived-graceful-restart {
                            description
                              "Enable long lived graceful restart support";
                            container stale-time {
                              description
                                "Maximum time to wait before purging long-lived stale routes";
                              leaf send {
                                type uint32 {
                                  range
                                    "0..16777215";
                                }
                                description
                                  "Stale-time sent in LLGR Capability";
                              }
    
                              leaf accept {
                                type uint32 {
                                  range
                                    "0..16777215";
                                }
                                description
                                  "Maximum stale-time acceptable from neighbor";
                              }
                            }  // container stale-time
    
                            container capable {
                              presence
                                "Indicates a capable node is configured.";
                              description
                                "Treat neighbor as LLGR capable";
                            }  // container capable
                          }  // container long-lived-graceful-restart
    
                          container as-override {
                            presence
                              "Indicates a as-override node is configured.";
                            description
                              "Override matching AS-number while sending update";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent as-override from being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container as-override
    
                          container aigp {
                            presence
                              "Indicates a aigp node is configured.";
                            description
                              "Enable AIGP for this neighbor ";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable AIGP";
                            }  // container disable
                          }  // container aigp
    
                          container aigp-send {
                            description
                              "Copy AIGP";
                            container cost-community {
                              description
                                "Send AIGP value in Cost Community";
                              leaf cost-community-id {
                                type uint32 {
                                  range "0..255";
                                }
                                must
                                  "not(../disable)";
                                description
                                  "Cost community ID";
                              }
    
                              container poi {
                                must
                                  "(igp-cost or pre-bestpath) and not(igp-cost and pre-bestpath)";
                                presence
                                  "Indicates a poi node is configured.";
                                description
                                  "Point of insertion for bestpath calculation";
                                container igp-cost {
                                  presence
                                    "Indicates a igp-cost node is configured.";
                                  description
                                    "Cost community is used after IGP distance to next hop";
                                  container transitive {
                                    presence
                                      "Indicates a transitive node is configured.";
                                    description
                                      "Enable transitive cost community";
                                  }  // container transitive
                                }  // container igp-cost
    
                                container pre-bestpath {
                                  presence
                                    "Indicates a pre-bestpath node is configured.";
                                  description
                                    "Cost community is first step in best path calculation";
                                  container transitive {
                                    presence
                                      "Indicates a transitive node is configured.";
                                    description
                                      "Enable transitive cost community";
                                  }  // container transitive
                                }  // container pre-bestpath
                              }  // container poi
    
                              container disable {
                                must
                                  "not(../cost-community-id)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable aigp send cost-community";
                              }  // container disable
                            }  // container cost-community
    
                            container med {
                              presence
                                "Indicates a med node is configured.";
                              description
                                "Send AIGP value in MED";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable aigp send med";
                              }  // container disable
                            }  // container med
                          }  // container aigp-send
    
                          container validation {
                            when
                              "../af-name = 'ipv4-flowspec' or ../af-name = 'ipv6-flowspec'";
                            presence
                              "Indicates a validation node is configured.";
                            description
                              "Flowspec Validation for this neighbor ";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable Flowspec Validation";
                            }  // container disable
    
                            container redirect {
                              description
                                "Flowspec Redirect nexthop Validation";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable Flowspec Redirect nexthop Validation";
                              }  // container disable
                            }  // container redirect
                          }  // container validation
    
                          container send-multicast-attributes {
                            when
                              "../af-name = 'ipv4-unicast' or ../af-name = 'ipv6-unicast' or ../af-name = 'ipv4-labeled-unicast' or ../af-name = 'ipv6-labeled-unicast' or ../af-name = 'ipv4-multicast' or ../af-name = 'ipv6-multicast' or ../af-name = 'ipv4-mvpn' or ../af-name = 'ipv6-mvpn'";
                            presence
                              "Indicates a send-multicast-attributes node is configured.";
                            description
                              "Send multicast attributes to this neighbor ";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable send multicast attribute";
                            }  // container disable
                          }  // container send-multicast-attributes
    
                          container signalling {
                            description
                              "Signalling protocols to disable, BGP or LDP";
                            container bgp {
                              description
                                "Select BGP to disable";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable Signalling type";
                              }  // container disable
                            }  // container bgp
    
                            container ldp {
                              description
                                "Select LDP to disable";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable Signalling type";
                              }  // container disable
                            }  // container ldp
                          }  // container signalling
    
                          container accept-own {
                            presence
                              "Indicates a accept-own node is configured.";
                            description
                              "Handle self-originated routes with Accept-Own community";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent item being inherited from a parent group";
                            }  // container inheritance-disable
                          }  // container accept-own
                        }  // list address-family
                      }  // container address-families
    
                      container update {
                        description
                          "BGP Update configuration";
                        container in {
                          description
                            "Inbound update message handling";
                          container filtering {
                            presence
                              "Indicates a filtering node is configured.";
                            description
                              "Inbound update message filtering";
                            container message {
                              description
                                "Filtered update messages";
                              container buffers {
                                presence
                                  "Indicates a buffers node is configured.";
                                description
                                  "Filtered update message buffers";
                                leaf number-of-buffers {
                                  type uint32 {
                                    range
                                      "0..25";
                                  }
                                  mandatory
                                    true;
                                  description
                                    "Filtered update message buffers";
                                }
    
                                container non-circular {
                                  presence
                                    "Indicates a non-circular node is configured.";
                                  description
                                    "Message buffer list is not circular";
                                }  // container non-circular
                              }  // container buffers
                            }  // container message
    
                            container logging {
                              description
                                "Update filtering syslog message";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable update filtering syslog message";
                              }  // container disable
                            }  // container logging
    
                            container attribute-filter {
                              description
                                "Attribute-filter configuration";
                              leaf group {
                                type string {
                                  length
                                    "1..1024";
                                }
                                description
                                  "Attribute-filter group configuration";
                              }
                            }  // container attribute-filter
                          }  // container filtering
    
                          container merge {
                            description
                              "Merge incoming updates";
                            container safi {
                              description
                                "SAFI of the NLRIs to merge";
                              container unicast {
                                description
                                  "IPv4/IPv6 unicast paths";
                                container labeled-unicast {
                                  presence
                                    "Indicates a labeled-unicast node is configured.";
                                  description
                                    "IPv4/IPv6 labeled-unicast paths";
                                  container inheritance-disable {
                                    presence
                                      "Indicates a inheritance-disable node is configured.";
                                    description
                                      "Do not inherit this configuration from parent group";
                                  }  // container inheritance-disable
                                }  // container labeled-unicast
                              }  // container unicast
                            }  // container safi
                          }  // container merge
                        }  // container in
                      }  // container update
    
                      container graceful-maintenance {
                        presence
                          "Indicates a graceful-maintenance node is configured.";
                        description
                          "Attributes for Graceful Maintenance. This will cause
    neig de-prer routes from this router and
    choonates.his allows the router to be
    brour out  service gracefully.";
                        container local-preference {
                          must
                            "local-preference-value or inheritance-disable";
                          presence
                            "Indicates a local-preference node is configured.";
                          description
                            "local preference with which to advertise routes to ibgps. Deflt=No Touch";
                          leaf local-preference-value {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "Range of values for Local Preference";
                          }
    
                          container inheritance-disable {
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent local preference from being inherited from the parent";
                          }  // container inheritance-disable
                        }  // container local-preference
    
                        container as-prepends {
                          must
                            "number-of-as-prepends or inheritance-disable";
                          presence
                            "Indicates a as-prepends node is configured.";
                          description
                            "Number of times to prepend the local AS number to the
    AS poutes.efault=0";
                          leaf number-of-as-prepends {
                            type uint32 {
                              range "0..6";
                            }
                            description
                              "Range of number of AS prepends";
                          }
    
                          container inheritance-disable {
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent AS prepends from being inherited from the parent";
                          }  // container inheritance-disable
                        }  // container as-prepends
    
                        container activate {
                          presence
                            "Indicates a activate node is configured.";
                          description
                            "Routes will be announced with the graceful maintenance
    attrhile aivated either here or under router
    bgp ation.hile activated, all routes to this
    neigl be aounced with the attributes
    confere anall routes from this neighbor will
    be a to otr neighbors with the graceful
    mainattribes configured under those
    neighe g-st community will be announced
    regaf the her attributes configured here. To
    alloshut cmunity to be announced to ebgp
    neighe sencommunity-gshut-ebgp configuration
    is aired. te: changes to the attributes will
    not ect whe activated.";
                          container inheritance-disable {
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent activate from being inherited from the parent";
                          }  // container inheritance-disable
                        }  // container activate
                      }  // container graceful-maintenance
    
                      leaf remote-as {
                        type xr:Bgp-as-number;
                        description
                          "bgp as-number";
                      }
    
                      leaf remote-as-list {
                        type string {
                          length "1..1024";
                        }
                        description
                          "Remote as-list configuration";
                      }
    
                      container use {
                        description
                          "Inherit configuration from a group";
                        leaf session-group {
                          type string {
                            length "1..1024";
                          }
                          description
                            "Inherit address-family independent config from a session-group";
                        }
    
                        leaf neighbor-group {
                          type string {
                            length "1..1024";
                          }
                          description
                            "Inherit configuration from a neighbor-group";
                        }
                      }  // container use
    
                      container advertisement-interval {
                        presence
                          "Indicates a advertisement-interval node is configured.";
                        description
                          "Minimum interval between sending BGP routing updates";
                        leaf time-in-seconds {
                          type uint32 {
                            range "0..600";
                          }
                          mandatory true;
                          description
                            "Minimum interval between sending BGP routing updates";
                        }
    
                        leaf time-in-milliseconds {
                          type uint32 {
                            range "0..999";
                          }
                          description
                            "time in milliseconds";
                        }
                      }  // container advertisement-interval
    
                      leaf description {
                        type string {
                          length "1..1024";
                        }
                        description
                          "Neighbor specific description";
                      }
    
                      container ignore-connected-check {
                        presence
                          "Indicates a ignore-connected-check node is configured.";
                        description
                          "Bypass the directly connected nexthop check for single-hop eBGP peering";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent ignore-connected-check from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container ignore-connected-check
    
                      container internal-vpn-client {
                        presence
                          "Indicates a internal-vpn-client node is configured.";
                        description
                          "Preserve iBGP CE neighbor path in ATTR_SET across VPN core";
                      }  // container internal-vpn-client
    
                      container ebgp-multihop {
                        presence
                          "Indicates a ebgp-multihop node is configured.";
                        description
                          "Allow EBGP neighbors not on directly connected networks";
                        leaf maximum-hop-count {
                          type uint32 {
                            range "1..255";
                          }
                          mandatory true;
                          description
                            "maximum hop count";
                        }
    
                        container mpls {
                          presence
                            "Indicates a mpls node is configured.";
                          description
                            "Disable BGP MPLS forwarding";
                        }  // container mpls
                      }  // container ebgp-multihop
    
                      container tcp {
                        description
                          "TCP session configuration commands";
                        container mss {
                          must
                            "initial-mss or inheritance-disable";
                          presence
                            "Indicates a mss node is configured.";
                          description
                            "Maximum Segment Size";
                          leaf initial-mss {
                            type uint32 {
                              range "68..10000";
                            }
                            description
                              "TCP initial maximum segment size";
                          }
    
                          container inheritance-disable {
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent tcp mss from being inherited from the parent";
                          }  // container inheritance-disable
                        }  // container mss
                      }  // container tcp
    
                      container bmp-activate {
                        description
                          "Enable BMP logging for this neighbor";
                        container servers {
                          description
                            "Enable BMP connection to particular server";
                          list server {
                            key "server-id";
                            description
                              "Enable BMP connection to particular server";
                            leaf server-id {
                              type uint32 {
                                range "1..8";
                              }
                              description
                                "Enable BMP connection to particular server";
                            }
                          }  // list server
                        }  // container servers
                      }  // container bmp-activate
    
                      container bfd {
                        description
                          "Configure BFD parameters";
                        container fast-detect {
                          must
                            "not(strict-mode and disable)";
                          presence
                            "Indicates a fast-detect node is configured.";
                          description
                            "Enable Fast detection";
                          container strict-mode {
                            presence
                              "Indicates a strict-mode node is configured.";
                            description
                              "Hold down neighbor session until BFD session is up";
                          }  // container strict-mode
    
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Prevent bfd settings from being inherited from the parent";
                          }  // container disable
                        }  // container fast-detect
    
                        leaf minimum-interval {
                          type uint32 {
                            range "3..30000";
                          }
                          description
                            "Hello interval";
                        }
    
                        leaf multiplier {
                          type uint32 {
                            range "2..16";
                          }
                          description
                            "Detect multiplier";
                        }
                      }  // container bfd
    
                      container keychain {
                        must
                          "name or inheritance-disable";
                        presence
                          "Indicates a keychain node is configured.";
                        description
                          "Set keychain based authentication";
                        leaf name {
                          type string {
                            length "1..32";
                          }
                          description
                            "Name of the key chain - maximum 32 characters";
                        }
    
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent keychain from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container keychain
    
                      container local-as {
                        must
                          "as-number or inheritance-disable";
                        presence
                          "Indicates a local-as node is configured.";
                        description
                          "Specify local AS number";
                        leaf as-number {
                          type xr:Bgp-as-number;
                          description
                            "bgp as-number";
                        }
    
                        container no-prepend {
                          presence
                            "Indicates a no-prepend node is configured.";
                          description
                            "Do not prepend local AS to announcements from this neighbor";
                          container replace-as {
                            presence
                              "Indicates a replace-as node is configured.";
                            description
                              "Prepend only local AS to announcements to this neighbor";
                            container dual-as {
                              presence
                                "Indicates a dual-as node is configured.";
                              description
                                "Dual-AS mode";
                            }  // container dual-as
                          }  // container replace-as
                        }  // container no-prepend
    
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent local AS from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container local-as
    
                      container password {
                        must
                          "encrypted or inheritance-disable";
                        presence
                          "Indicates a password node is configured.";
                        description
                          "Set a password";
                        leaf encrypted {
                          type xr:Proprietary-password;
                          description
                            "Specifies an ENCRYPTED password will follow";
                        }
    
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent password from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container password
    
                      container receive-buffer-size {
                        presence
                          "Indicates a receive-buffer-size node is configured.";
                        description
                          "Set socket and BGP receive buffer size";
                        leaf receive-socket-buffer-size {
                          type uint32 {
                            range "512..131072";
                          }
                          mandatory true;
                          description
                            "Set socket and BGP receive buffer size";
                        }
    
                        leaf bgp-read-buffer-size {
                          type uint32 {
                            range "512..131072";
                          }
                          description
                            "BGP Read buffer size in bytes";
                        }
                      }  // container receive-buffer-size
    
                      container send-buffer-size {
                        presence
                          "Indicates a send-buffer-size node is configured.";
                        description
                          "Set socket and BGP send buffer size";
                        leaf send-socket-buffer-size {
                          type uint32 {
                            range "4096..131072";
                          }
                          mandatory true;
                          description
                            "Set socket and BGP send buffer size";
                        }
    
                        leaf bgp-write-buffer-size {
                          type uint32 {
                            range "4096..131072";
                          }
                          description
                            "BGP Write buffer size in bytes";
                        }
                      }  // container send-buffer-size
    
                      container shutdown {
                        presence
                          "Indicates a shutdown node is configured.";
                        description
                          "Administratively shut down this neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent this neighbor being shutdown, even if its parent is";
                        }  // container inheritance-disable
                      }  // container shutdown
    
                      container timers {
                        presence
                          "Indicates a timers node is configured.";
                        description
                          "BGP per neighbor timers";
                        leaf keepalive-interval {
                          type uint32 {
                            range "0..65535";
                          }
                          mandatory true;
                          description
                            "BGP timers";
                        }
    
                        leaf holdtime {
                          type union {
                            type uint32 {
                              range "0";
                            }
                            type uint32 {
                              range "3..65535";
                            }
                          }
                          mandatory true;
                          description
                            "Holdtime. Set 0 to disable keepalives/hold time.";
                        }
    
                        leaf minimum-acceptable-holdtime {
                          type union {
                            type uint32 {
                              range "0";
                            }
                            type uint32 {
                              range "3..65535";
                            }
                          }
                          description
                            "Minimum acceptable holdtime from neighbor. Set 0 to disable keepalives/hold time.";
                        }
                      }  // container timers
    
                      container local {
                        description
                          "Configure local parameter";
                        container address {
                          must
                            "ip-address or inheritance-disable";
                          presence
                            "Indicates a address node is configured.";
                          description
                            "use configured local address for bgp peering";
                          leaf ip-address {
                            type inet:ip-address-no-zone;
                            description
                              "IPv4 address";
                          }
    
                          container inheritance-disable {
                            presence
                              "Indicates a inheritance-disable node is configured.";
                            description
                              "Prevent local address from being inherited from parent";
                          }  // container inheritance-disable
                        }  // container address
                      }  // container local
    
                      container log {
                        description
                          "Logging update messages per neighbor";
                        container message {
                          description
                            "Logging update/notification messages per neighbor";
                          container in {
                            description
                              "Inbound log messages";
                            leaf message-log-buffer-size {
                              type uint32 {
                                range "1..500";
                              }
                              description
                                "Range for message log buffer size";
                            }
    
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable inbound message logging";
                            }  // container disable
    
                            container inheritance-diable {
                              presence
                                "Indicates a inheritance-diable node is configured.";
                              description
                                "Prevents the msg log from being inherited from the parent";
                            }  // container inheritance-diable
                          }  // container in
    
                          container out {
                            description
                              "Outbound log messages";
                            leaf range-for-message-log-buffer {
                              type uint32 {
                                range "1..500";
                              }
                              description
                                "Range for message log buffer size";
                            }
    
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable outbound message logging";
                            }  // container disable
    
                            container inheritance-diable {
                              presence
                                "Indicates a inheritance-diable node is configured.";
                              description
                                "Prevents the msg log from being inherited from the parent";
                            }  // container inheritance-diable
                          }  // container out
                        }  // container message
                      }  // container log
    
                      leaf update-source {
                        type xr:Interface-name;
                        description
                          "Source of routing updates";
                      }
    
                      container local-address-subnet {
                        description
                          "Local address subnet of routing updates";
                        leaf ip-address {
                          type inet:ip-address-no-zone;
                          description
                            "IP address and mask or masklength";
                        }
    
                        leaf mask-length {
                          type uint32 {
                            range "0..128";
                          }
                          description
                            "IP address and mask length";
                        }
                      }  // container local-address-subnet
    
                      container dmz-link-bandwidth {
                        presence
                          "Indicates a dmz-link-bandwidth node is configured.";
                        description
                          "Propagate the DMZ link bandwidth";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent dmz-link-bandwidth from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container dmz-link-bandwidth
    
                      container ebgp-recv-extcommunity-dmz {
                        presence
                          "Indicates a ebgp-recv-extcommunity-dmz node is configured.";
                        description
                          "Receive extcommunity dmz link bandwidth from ebgp neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent ebgp-send-community-dmz from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container ebgp-recv-extcommunity-dmz
    
                      container ebgp-send-extcommunity-dmz {
                        must
                          "not(cumulative and inheritance-disable)";
                        presence
                          "Indicates a ebgp-send-extcommunity-dmz node is configured.";
                        description
                          "Send extended community dmz link bandwidth to ebgp neighbor";
                        container cumulative {
                          presence
                            "Indicates a cumulative node is configured.";
                          description
                            "Send cumulative community dmz link bandwidth of all multipaths to ebgp neighbor";
                        }  // container cumulative
    
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent ebgp-send-extcommunity-dmz from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container ebgp-send-extcommunity-dmz
    
                      container ttl-security {
                        presence
                          "Indicates a ttl-security node is configured.";
                        description
                          "Enable EBGP TTL security";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent ttl-security from being inherited from the parent";
                        }  // container inheritance-disable
                      }  // container ttl-security
    
                      container session-open-mode {
                        description
                          "Establish BGP session using this TCP open mode";
                        container active-only {
                          must
                            "not(../passive-only or ../both)";
                          presence
                            "Indicates a active-only node is configured.";
                          description
                            "Active only";
                        }  // container active-only
    
                        container passive-only {
                          must
                            "not(../active-only or ../both)";
                          presence
                            "Indicates a passive-only node is configured.";
                          description
                            "Passive only";
                        }  // container passive-only
    
                        container both {
                          must
                            "not(../active-only or ../passive-only)";
                          presence
                            "Indicates a both node is configured.";
                          description
                            "Prevent session-open-mode being inherited from the parent";
                        }  // container both
                      }  // container session-open-mode
    
                      leaf dscp {
                        type enumeration {
                          enum "default" {
                            value 0;
                            description
                              "Set packets with default dscp (000000)";
                          }
                          enum "cs1" {
                            value 8;
                            description
                              "Set packets with CS1(precedence 1) dscp (001000)";
                          }
                          enum "af11" {
                            value 10;
                            description
                              "Set packets with AF11 dscp (001010)";
                          }
                          enum "af12" {
                            value 12;
                            description
                              "Set packets with AF12 dscp (001100)";
                          }
                          enum "af13" {
                            value 14;
                            description
                              "Set packets with AF13 dscp (001110)";
                          }
                          enum "cs2" {
                            value 16;
                            description
                              "Set packets with CS2(precedence 2) dscp (010000)";
                          }
                          enum "af21" {
                            value 18;
                            description
                              "Set packets with AF21 dscp (010010)";
                          }
                          enum "af22" {
                            value 20;
                            description
                              "Set packets with AF22 dscp (010100)";
                          }
                          enum "af23" {
                            value 22;
                            description
                              "Set packets with AF23 dscp (010110)";
                          }
                          enum "cs3" {
                            value 24;
                            description
                              "Set packets with CS3(precedence 3) dscp (011000)";
                          }
                          enum "af31" {
                            value 26;
                            description
                              "Set packets with AF31 dscp (011010)";
                          }
                          enum "af32" {
                            value 28;
                            description
                              "Set packets with AF32 dscp (011100)";
                          }
                          enum "af33" {
                            value 30;
                            description
                              "Set packets with AF33 dscp (011110)";
                          }
                          enum "cs4" {
                            value 32;
                            description
                              "Set packets with CS4(precedence 4) dscp (100000)";
                          }
                          enum "af41" {
                            value 34;
                            description
                              "Set packets with AF41 dscp (100010)";
                          }
                          enum "af42" {
                            value 36;
                            description
                              "Set packets with AF42 dscp (100100)";
                          }
                          enum "af43" {
                            value 38;
                            description
                              "Set packets with AF43 dscp (100110)";
                          }
                          enum "cs5" {
                            value 40;
                            description
                              "Set packets with CS5(precedence 5) dscp (101000)";
                          }
                          enum "ef" {
                            value 46;
                            description
                              "Set packets with EF dscp (101110)";
                          }
                          enum "cs6" {
                            value 48;
                            description
                              "Set packets with CS6(precedence 6) dscp (110000)";
                          }
                          enum "cs7" {
                            value 56;
                            description
                              "Set packets with CS7(precedence 7) dscp (111000)";
                          }
                        }
                        description
                          "Set IP DSCP (DiffServ CodePoint)";
                      }
    
                      leaf precedence {
                        type enumeration {
                          enum "routine" {
                            value 0;
                            description
                              "Set packets with routine precedence (0)";
                          }
                          enum "priority" {
                            value 1;
                            description
                              "Set packets with priority precedence (1)";
                          }
                          enum "immediate" {
                            value 2;
                            description
                              "Set packets with immediate precedence (2)";
                          }
                          enum "flash" {
                            value 3;
                            description
                              "Set packets with flash precedence (3)";
                          }
                          enum "flash-override" {
                            value 4;
                            description
                              "Set packets with flash override precedence (4)";
                          }
                          enum "critical" {
                            value 5;
                            description
                              "Set packets with critical precedence (5)";
                          }
                          enum "internet" {
                            value 6;
                            description
                              "Set packets with internetwork control precedence (6)";
                          }
                          enum "network" {
                            value 7;
                            description
                              "Set packets with network control precedence (7)";
                          }
                        }
                        description
                          "Set precedence";
                      }
    
                      container capability {
                        description
                          "Advertise capability to the peer";
                        container suppress {
                          description
                            "Suppress advertising capability to the peer ";
                          container four-byte-as {
                            presence
                              "Indicates a four-byte-as node is configured.";
                            description
                              "4-byte-as capability";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Prevent capability suppress 4-type-as being inherited from the parent";
                            }  // container inheritance-disable
                          }  // container four-byte-as
    
                          container all {
                            presence
                              "Indicates a all node is configured.";
                            description
                              "All capabilities";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Do not inherit this configuration from parent group";
                            }  // container inheritance-disable
                          }  // container all
    
                          container extended-nexthop-encoding {
                            presence
                              "Indicates a extended-nexthop-encoding node is configured.";
                            description
                              "Extended-nexthop-encoding capabilities (IETF RFC 5549)";
                            container inheritance-disable {
                              presence
                                "Indicates a inheritance-disable node is configured.";
                              description
                                "Do not inherit this configuration from parent group";
                            }  // container inheritance-disable
                          }  // container extended-nexthop-encoding
                        }  // container suppress
    
                        container additional-paths {
                          description
                            "Additional paths capability";
                          container send {
                            presence
                              "Indicates a send node is configured.";
                            description
                              "Additional paths Send capability";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Do not advertise additional paths Send capability";
                            }  // container disable
                          }  // container send
    
                          container receive {
                            presence
                              "Indicates a receive node is configured.";
                            description
                              "Additional paths Receive capability";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Do not advertise additional paths Receive capability";
                            }  // container disable
                          }  // container receive
                        }  // container additional-paths
                      }  // container capability
    
                      container graceful-restart {
                        presence
                          "Indicates a graceful-restart node is configured.";
                        description
                          "Enable graceful restart support for this neighbor";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable graceful restart support for this neighbor";
                        }  // container disable
    
                        leaf restart-time {
                          type uint32 {
                            range "1..4095";
                          }
                          description
                            "Restart time advertised to the neighbor";
                        }
    
                        leaf stalepath-time {
                          type uint32 {
                            range "1..4095";
                          }
                          description
                            "Maximum time to wait for restart of GR capable peer";
                        }
                      }  // container graceful-restart
    
                      container enforce-first-as {
                        presence
                          "Indicates a enforce-first-as node is configured.";
                        description
                          "Enforce the first AS for EBGP routes";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Do not enforce the first AS for EBGP routes";
                        }  // container disable
                      }  // container enforce-first-as
    
                      container enforce-first-as-disable {
                        presence
                          "Indicates a enforce-first-as-disable node is configured.";
                        description
                          "Do not enforce the first AS for EBGP routes";
                      }  // container enforce-first-as-disable
    
                      leaf maximum-peers {
                        type uint32 {
                          range "1..4095";
                        }
                        description
                          "Maximum dynamic neighbors";
                      }
    
                      leaf idle-watch-time {
                        type uint32 {
                          range "30..1800";
                        }
                        description
                          "Maximum time to wait for deletion of IDLE state dynamic peer";
                      }
    
                      container egress-engineering {
                        presence
                          "Indicates a egress-engineering node is configured.";
                        description
                          "Enable egress peer engineering for this neighbor";
                        container inheritance-disable {
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Do not inherit egress-engineering from the parent";
                        }  // container inheritance-disable
                      }  // container egress-engineering
    
                      container peer-sets {
                        description
                          "Assign this neighbor to a peer-set used for egress peer engineering";
                        list peer-set {
                          key "peer-set-id";
                          description
                            "Assign this neighbor to a peer-set used for egress peer engineering";
                          leaf peer-set-id {
                            type uint32 {
                              range "1..255";
                            }
                            description
                              "Assign this neighbor to a peer-set used for egress peer engineering";
                          }
                        }  // list peer-set
                      }  // container peer-sets
    
                      container peer-node-sid {
                        description
                          "Assign this neighbor a manual SID for egress peer engineering";
                        leaf index {
                          type uint32 {
                            range "0..1033575";
                          }
                          description
                            "Segment Index value which is offset of SRLB";
                        }
                      }  // container peer-node-sid
    
                      container ao {
                        description
                          "Enable Authentiation Option";
                        leaf key-chain-name {
                          type string {
                            length "1..32";
                          }
                          must
                            "not(../inheritance-disable) and (../include-tcp-options/enable or ../include-tcp-options/disable)";
                          description
                            "Name of the key chain - maximum 32 characters";
                        }
    
                        container include-tcp-options {
                          description
                            "Include/Exclude other TCP options in the header";
                          container enable {
                            must
                              "not(../disable or ../../inheritance-disable)";
                            presence
                              "Indicates a enable node is configured.";
                            description
                              "Include other TCP options in the header";
                          }  // container enable
    
                          container disable {
                            must
                              "not(../enable or ../../inheritance-disable)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Exclude other TCP options in the header";
                          }  // container disable
    
                          container accept-ao-mismatch-connection {
                            must
                              "../enable or ../disable";
                            presence
                              "Indicates a accept-ao-mismatch-connection node is configured.";
                            description
                              "Accept new connection even if AO mismatched";
                          }  // container accept-ao-mismatch-connection
                        }  // container include-tcp-options
    
                        container inheritance-disable {
                          must
                            "not(../key-chain-name)";
                          presence
                            "Indicates a inheritance-disable node is configured.";
                          description
                            "Prevent keychain from being inherited from parent";
                        }  // container inheritance-disable
                      }  // container ao
    
                      container origin-as {
                        description
                          "BGP origin-AS knobs";
                        container validation {
                          description
                            "BGP origin-AS validation knobs";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable RPKI origin-AS validation";
                          }  // container disable
                        }  // container validation
                      }  // container origin-as
    
                      container bestpath {
                        description
                          "Change default route selection criteria";
                        container origin-as {
                          description
                            "BGP origin-AS knobs";
                          container allow {
                            description
                              "BGP origin-AS knobs";
                            container invalid {
                              presence
                                "Indicates a invalid node is configured.";
                              description
                                "BGP bestpath selection will allow 'invalid' origin-AS";
                            }  // container invalid
                          }  // container allow
                        }  // container origin-as
                      }  // container bestpath
                    }  // list neighbor-range
                  }  // container neighbors
    
                  container mpls {
                    description
                      "Enable mpls parameters";
                    container activate {
                      description
                        "Enter mpls interfaces in BGP vrf mpls activation mode";
                      container interfaces {
                        description
                          "Interface to enable mpls";
                        list interface {
                          key "interface-name";
                          description
                            "Interface to enable mpls";
                          leaf interface-name {
                            type xr:Interface-name;
                            description
                              "Interface to enable mpls";
                          }
                        }  // list interface
                      }  // container interfaces
                    }  // container activate
                  }  // container mpls
    
                  container default-information {
                    description
                      "Control distribution of default information";
                    container originate {
                      presence
                        "Indicates a originate node is configured.";
                      description
                        "Distribute a default route";
                    }  // container originate
                  }  // container default-information
    
                  leaf default-metric {
                    type uint32 {
                      range "1..4294967295";
                    }
                    description
                      "default redistributed metric";
                  }
    
                  container socket {
                    description
                      "set socket parameters";
                    leaf send-buffer-size {
                      type uint32 {
                        range "4096..131072";
                      }
                      description
                        "socket send buffer size";
                    }
    
                    leaf bgp-write-buffer-size {
                      type uint32 {
                        range "4096..131072";
                      }
                      must "../send-buffer-size";
                      description
                        "BGP Write buffer size in bytes";
                    }
    
                    leaf receive-buffer-size {
                      type uint32 {
                        range "512..131072";
                      }
                      description
                        "socket receive buffer size";
                    }
    
                    leaf bgp-read-buffer-size {
                      type uint32 {
                        range "512..131072";
                      }
                      must
                        "../receive-buffer-size";
                      description
                        "BGP Read buffer size in bytes";
                    }
                  }  // container socket
    
                  container nexthop {
                    description
                      "Configure next-hop related items";
                    container mpls {
                      description
                        "Configure next-hop related items for mpls";
                      container forwarding {
                        description
                          "Enable next hop mpls forwarding path";
                        container ibgp {
                          presence
                            "Indicates a ibgp node is configured.";
                          description
                            "Enable mpls forwarding path for ibgp learnt nexthops";
                        }  // container ibgp
                      }  // container forwarding
                    }  // container mpls
    
                    container resolution {
                      description
                        "Configure next-hop related items for resolution";
                      container allow-default {
                        presence
                          "Indicates a allow-default node is configured.";
                        description
                          "Enable nexthops resolution using default route";
                      }  // container allow-default
                    }  // container resolution
                  }  // container nexthop
    
                  container slow-peer {
                    description
                      "Disable slow peer detection";
                    container detection {
                      description
                        "Disable slow peer detection";
                      container disable {
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable slow peer detection";
                      }  // container disable
                    }  // container detection
                  }  // container slow-peer
    
                  container timers {
                    description
                      "Adjust routing timers";
                    container bgp {
                      presence
                        "Indicates a bgp node is configured.";
                      description "BGP timers";
                      leaf keepalive-interval {
                        type uint32 {
                          range "0..65535";
                        }
                        mandatory true;
                        description "BGP timers";
                      }
    
                      leaf holdtime {
                        type union {
                          type uint32 {
                            range "0";
                          }
                          type uint32 {
                            range "3..65535";
                          }
                        }
                        mandatory true;
                        description
                          "Holdtime. Set 0 to disable keepalives/hold time.";
                      }
    
                      leaf minimum-acceptable-holdtime {
                        type union {
                          type uint32 {
                            range "0";
                          }
                          type uint32 {
                            range "3..65535";
                          }
                        }
                        description
                          "Minimum acceptable holdtime from neighbor. Set 0 to disable keepalives/hold time.";
                      }
                    }  // container bgp
                  }  // container timers
    
                  container optimal-route-reflection {
                    description
                      "Configure optimal-route-reflection group";
                    container ipv4 {
                      description
                        "IPv4 ORR group";
                      list orr-group {
                        key "orr-group-name";
                        description
                          "ORR group name - maximum 32 characters";
                        leaf orr-group-name {
                          type string {
                            length "1..32";
                          }
                          description
                            "ORR group name - maximum 32 characters";
                        }
    
                        leaf primary-address {
                          type inet:ipv4-address-no-zone;
                          mandatory true;
                          description
                            "IPv4 primary address";
                        }
    
                        leaf secondary-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "IPv4 secondary address";
                        }
    
                        leaf tertiary-address {
                          type inet:ipv4-address-no-zone;
                          must
                            "../secondary-address";
                          description
                            "IPv4 tertiary address";
                        }
                      }  // list orr-group
                    }  // container ipv4
    
                    container ipv6 {
                      description
                        "IPv6 ORR group";
                      list orr-group {
                        key "orr-group-name";
                        description
                          "ORR group name - maximum 32 characters";
                        leaf orr-group-name {
                          type string {
                            length "1..32";
                          }
                          description
                            "ORR group name - maximum 32 characters";
                        }
    
                        leaf primary-address {
                          type inet:ipv6-address-no-zone;
                          mandatory true;
                          description
                            "IPv6 primary address";
                        }
    
                        leaf secondary-address {
                          type inet:ipv6-address-no-zone;
                          description
                            "IPv6 secondary address";
                        }
    
                        leaf tertiary-address {
                          type inet:ipv6-address-no-zone;
                          must
                            "../secondary-address";
                          description
                            "IPv6 tertiary address";
                        }
                      }  // list orr-group
                    }  // container ipv6
                  }  // container optimal-route-reflection
    
                  container bgp {
                    description "BGP commands";
                    container auto-policy-soft-reset {
                      description
                        "Enable automatic soft peer reset on policy reconfiguration";
                      container disable {
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable automatic soft peer reset on policy reconfiguration";
                      }  // container disable
                    }  // container auto-policy-soft-reset
    
                    container bestpath {
                      description
                        "Change default route selection criteria";
                      container as-path {
                        description
                          "AS path length";
                        container ignore {
                          presence
                            "Indicates a ignore node is configured.";
                          description
                            "Ignore as-path length";
                        }  // container ignore
    
                        container multipath-relax {
                          presence
                            "Indicates a multipath-relax node is configured.";
                          description
                            "Relax as-path check for multipath selection";
                        }  // container multipath-relax
                      }  // container as-path
    
                      container cost-community {
                        description
                          "Cost community";
                        container ignore {
                          presence
                            "Indicates a ignore node is configured.";
                          description
                            "Ignore cost-community comparison";
                        }  // container ignore
                      }  // container cost-community
    
                      container compare-routerid {
                        presence
                          "Indicates a compare-routerid node is configured.";
                        description
                          "Compare router-id for identical EBGP paths";
                      }  // container compare-routerid
    
                      container aigp {
                        description
                          "AIGP attribute";
                        container ignore {
                          presence
                            "Indicates a ignore node is configured.";
                          description
                            "Ignore AIGP attribute";
                        }  // container ignore
                      }  // container aigp
    
                      container igp-metric {
                        description
                          "IGP metric values";
                        container ignore {
                          presence
                            "Indicates a ignore node is configured.";
                          description
                            "Ignore IGP metric during path comparison";
                        }  // container ignore
                      }  // container igp-metric
    
                      container med {
                        description
                          "MED related";
                        container always {
                          presence
                            "Indicates a always node is configured.";
                          description
                            "Allow comparing MED from different neighbors";
                        }  // container always
    
                        container missing-as-worst {
                          presence
                            "Indicates a missing-as-worst node is configured.";
                          description
                            "Treat missing MED as the least preferred one";
                        }  // container missing-as-worst
                      }  // container med
    
                      container origin-as {
                        description
                          "BGP origin-AS knobs";
                        container use {
                          description
                            "BGP origin-AS knobs";
                          container validity {
                            presence
                              "Indicates a validity node is configured.";
                            description
                              "BGP bestpath selection will use origin-AS validity";
                          }  // container validity
                        }  // container use
    
                        container allow {
                          description
                            "BGP origin-AS knobs";
                          container invalid {
                            presence
                              "Indicates a invalid node is configured.";
                            description
                              "BGP bestpath selection will allow 'invalid' origin-AS";
                          }  // container invalid
                        }  // container allow
                      }  // container origin-as
    
                      container sr-policy {
                        description
                          "Paths over SR-policy";
                        container prefer {
                          presence
                            "Indicates a sr-policy node is configured.";
                          description
                            "Consider only paths over SR Policy for bestpath selection";
                        }  // container prefer
                      }  // container sr-policy
                    }  // container bestpath
    
                    container default {
                      description
                        "Configure default value";
                      leaf local-preference {
                        type uint32 {
                          range "0..4294967295";
                        }
                        description
                          "Local preference";
                      }
                    }  // container default
    
                    container enforce-first-as {
                      description
                        "Enforce the first AS for EBGP routes";
                      container disable {
                        presence
                          "Indicates a disable node is configured.";
                        description "Disable";
                      }  // container disable
                    }  // container enforce-first-as
    
                    container fast-external-fallover {
                      description
                        "Immediately reset session if a link to a directly connected external peer goes down";
                      container disable {
                        presence
                          "Indicates a disable node is configured.";
                        description "Disable";
                      }  // container disable
                    }  // container fast-external-fallover
    
                    container log {
                      description "Log bgp info";
                      container neighbor {
                        description
                          "Log neighbor state info";
                        container changes {
                          description
                            "Log neighbor up/down and reset reason";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable logging";
                          }  // container disable
                        }  // container changes
                      }  // container neighbor
    
                      container message {
                        description
                          "Log neighbor inbound/outbound message";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable inbound and outbound message logging for all neighbors under the vrf";
                        }  // container disable
                      }  // container message
                    }  // container log
    
                    container multipath {
                      description
                        "Change multipath selection criteria";
                      container as-path {
                        description "AS path";
                        container ignore {
                          description
                            "Ignore as-path related check for multipath selection";
                          container exact-match {
                            presence
                              "Indicates a exact-match node is configured.";
                            description
                              "Ignore as-path for multipath selection";
                          }  // container exact-match
    
                          container onwards {
                            presence
                              "Indicates a onwards node is configured.";
                            description
                              "Ignore everything onwards as-path for multipath selection";
                          }  // container onwards
                        }  // container ignore
                      }  // container as-path
                    }  // container multipath
    
                    container redistribute-internal {
                      presence
                        "Indicates a redistribute-internal node is configured.";
                      description
                        "Allow redistribution of iBGP into IGPs (dangerous)";
                    }  // container redistribute-internal
    
                    leaf router-id {
                      type inet:ipv4-address-no-zone;
                      description
                        "Configure Router-id";
                    }
    
                    container unsafe-ebgp-policy {
                      presence
                        "Indicates a unsafe-ebgp-policy node is configured.";
                      description
                        "Make eBGP neighbors with no policy pass all routes";
                    }  // container unsafe-ebgp-policy
    
                    container origin-as {
                      description
                        "BGP origin-AS knobs";
                      container validation {
                        description
                          "BGP origin-AS validation knobs";
                        container signal {
                          description
                            "Signal origin-AS validity towards peers";
                          container ibgp {
                            presence
                              "Indicates a ibgp node is configured.";
                            description
                              "Signal origin-AS validity towards iBGP peers";
                          }  // container ibgp
                        }  // container signal
    
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable RPKI origin-AS validation";
                        }  // container disable
                      }  // container validation
                    }  // container origin-as
                  }  // container bgp
    
                  container bfd {
                    description
                      "Configure BFD parameters";
                    leaf minimum-interval {
                      type uint32 {
                        range "3..30000";
                      }
                      description
                        "Hello interval";
                    }
    
                    leaf multiplier {
                      type uint32 {
                        range "2..16";
                      }
                      description
                        "Detect multiplier";
                    }
                  }  // container bfd
    
                  container rd {
                    must
                      "auto or two-byte-as or four-byte-as or ip-address";
                    presence
                      "Indicates a rd node is configured.";
                    description
                      "route distinguisher";
                    container auto {
                      must
                        "not(../two-byte-as or ../four-byte-as or ../ip-address)";
                      presence
                        "Indicates a auto node is configured.";
                      description
                        "Automatic route distinguisher";
                    }  // container auto
    
                    container two-byte-as {
                      must
                        "not(../auto or ../four-byte-as or ../ip-address)";
                      presence
                        "Indicates a two-byte-as node is configured.";
                      leaf as-number {
                        type xr:Bgp-as-number;
                        mandatory true;
                        description
                          "bgp as-number";
                      }
    
                      leaf index {
                        type uint32 {
                          range "0..4294967295";
                        }
                        mandatory true;
                        description
                          "ASN2:index (hex or decimal format)";
                      }
                    }  // container two-byte-as
    
                    container four-byte-as {
                      must
                        "not(../auto or ../two-byte-as or ../ip-address)";
                      presence
                        "Indicates a four-byte-as node is configured.";
                      leaf as-number {
                        type xr:Bgp-as-number;
                        mandatory true;
                        description
                          "4-byte AS number";
                      }
    
                      leaf index {
                        type uint32 {
                          range "0..4294967295";
                        }
                        mandatory true;
                        description
                          "ASN2:index (hex or decimal format)";
                      }
                    }  // container four-byte-as
    
                    container ip-address {
                      must
                        "not(../auto or ../two-byte-as or ../four-byte-as)";
                      presence
                        "Indicates a ip-address node is configured.";
                      description
                        "configure this node";
                      leaf ipv4-address {
                        type inet:ipv4-address-no-zone;
                        mandatory true;
                        description
                          "configure this node";
                      }
    
                      leaf index {
                        type uint32 {
                          range "0..65535";
                        }
                        mandatory true;
                        description
                          "IPv4Address:index (hex or decimal format)";
                      }
                    }  // container ip-address
                  }  // container rd
                }  // list vrf
              }  // container vrfs
            }  // list as
          }  // container bgp
        }  // container router
      }  // module Cisco-IOS-XR-um-router-bgp-cfg
    

© 2023 YumaWorks, Inc. All rights reserved.