This module contains a collection of YANG definitions for Cisco IOS-XR router-bgp package configuration. This YANG module augme...
Version: 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.