module frr-bgp-route-map { yang-version 1.1; namespace "http://frrouting.org/yang/bgp-route-map"; prefix frr-bgp-route-map; import ietf-inet-types { prefix inet; } import frr-route-map { prefix frr-route-map; } import frr-filter { prefix filter; } import frr-bgp-filter { prefix bgp-filter; } import ietf-routing-types { prefix rt-types; } import frr-route-types { prefix frr-route-types; } organization "Free Range Routing"; contact "FRR Users List: FRR Development List: "; description "This module defines bgp route map settings"; revision 2020-01-02 { description "Initial revision"; } identity match-alias { base frr-route-map:rmap-match-type; description "Match BGP community alias name"; } identity match-local-preference { base frr-route-map:rmap-match-type; description "Match local-preference of routes"; } identity match-script { base frr-route-map:rmap-match-type; description "Match script of routes"; } identity match-origin { base frr-route-map:rmap-match-type; description "Match BGP route origin code"; } identity rpki { base frr-route-map:rmap-match-type; description "Control rpki specific settings"; } identity rpki-extcommunity { base frr-route-map:rmap-match-type; description "Control rpki specific settings derived from extended community"; } identity probability { base frr-route-map:rmap-match-type; description "Match portion of routes defined by percentage value"; } identity source-vrf { base frr-route-map:rmap-match-type; description "Match source vrf of routes"; } identity peer { base frr-route-map:rmap-match-type; description "Match peer address"; } identity mac-address-list { base frr-route-map:rmap-match-type; description "Match MAC address access-list"; } identity ip-route-source { base frr-route-map:rmap-match-type; description "Match advertising source address of route"; } identity ip-route-source-prefix-list { base frr-route-map:rmap-match-type; description "Match advertising source address of route"; } identity evpn-route-type { base frr-route-map:rmap-match-type; description "Match EVPN route type"; } identity evpn-default-route { base frr-route-map:rmap-match-type; description "Match EVPN default Type-5 route"; } identity evpn-vni { base frr-route-map:rmap-match-type; description "Match EVPN VNI"; } identity evpn-rd { base frr-route-map:rmap-match-type; description "Match EVPN route distinguisher"; } identity match-community { base frr-route-map:rmap-match-type; description "Match BGP community list"; } identity match-large-community { base frr-route-map:rmap-match-type; description "Match BGP large-community list"; } identity match-extcommunity { base frr-route-map:rmap-match-type; description "Match BGP extcommunity list"; } identity as-path-list { base frr-route-map:rmap-match-type; description "Match BGP AS path list"; } identity ipv4-nexthop { base frr-route-map:rmap-match-type; description "Match IPv4 next hop address"; } identity ipv6-nexthop { base frr-route-map:rmap-match-type; description "Match IPv6 next hop address"; } identity source-protocol { base frr-route-map:rmap-match-type; description "Match protocol via which the route was learnt"; } identity distance { base frr-route-map:rmap-set-type; description "Set BGP administrative distance to use"; } identity set-extcommunity-none { base frr-route-map:rmap-set-type; description "Set BGP extended community attribute"; } identity set-extcommunity-rt { base frr-route-map:rmap-set-type; description "Set BGP extended community attribute"; } identity set-extcommunity-nt { base frr-route-map:rmap-set-type; description "Set BGP extended community attribute"; } identity set-extcommunity-soo { base frr-route-map:rmap-set-type; description "Set BGP extended community attribute"; } identity set-extcommunity-lb { base frr-route-map:rmap-set-type; description "Set BGP extended community attribute"; } identity set-extcommunity-color { base frr-route-map:rmap-set-type; description "Set BGP extended community attribute"; } identity set-ipv4-nexthop { base frr-route-map:rmap-set-type; description "Set the IPv4 next-hop to peer-address/unchanged"; } identity ipv4-vpn-address { base frr-route-map:rmap-set-type; description "Set IPv4 VPN next-hop address"; } identity ipv6-nexthop-global { base frr-route-map:rmap-set-type; description "Set IPv6 next-hop global address"; } identity ipv6-prefer-global { base frr-route-map:rmap-set-type; description "Set IPv6 next-hop to prefer global address"; } identity ipv6-peer-address { base frr-route-map:rmap-set-type; description "Set IPv6 next-hop peer address"; } identity ipv6-vpn-address { base frr-route-map:rmap-set-type; description "Set IPv6 VPN next-hop address"; } identity label-index { base frr-route-map:rmap-set-type; description "Set the label index to associate with the prefixs"; } identity set-local-preference { base frr-route-map:rmap-set-type; description "Set the BGP local preference path attribute"; } identity set-origin { base frr-route-map:rmap-set-type; description "Set BGP route origin code"; } identity weight { base frr-route-map:rmap-set-type; description "Set the BGP weight attribute"; } identity originator-id { base frr-route-map:rmap-set-type; description "Set the BGP originator ID attribute"; } identity table { base frr-route-map:rmap-set-type; description "Export route to non-main kernel table"; } identity atomic-aggregate { base frr-route-map:rmap-set-type; description "Set BGP atomic-aggregate attribute"; } identity aigp-metric { base frr-route-map:rmap-set-type; description "Set BGP AIGP attribute (AIGP TLV Metric)"; } identity as-path-prepend { base frr-route-map:rmap-set-type; description "Set the BGP AS-path attribute"; } identity as-path-exclude { base frr-route-map:rmap-set-type; description "Set the BGP AS-path attribute"; } identity as-path-replace { base frr-route-map:rmap-set-type; description "Replace ASNs to local AS number"; } identity set-community { base frr-route-map:rmap-set-type; description "Set the BGP community attribute"; } identity set-large-community { base frr-route-map:rmap-set-type; description "Set the BGP large-community attribute"; } identity aggregator { base frr-route-map:rmap-set-type; description "Set the BGP aggregator attribute"; } identity comm-list-delete { base frr-route-map:rmap-set-type; description "Set BGP community list (for deletion)"; } identity large-comm-list-delete { base frr-route-map:rmap-set-type; description "Set BGP large community list (for deletion)"; } identity extended-comm-list-delete { base frr-route-map:rmap-set-type; description "Set BGP extended community list (for deletion)"; } identity set-evpn-gateway-ip-ipv4 { base frr-route-map:rmap-set-type; description "Set EVPN gateway IP overlay index IPv4"; } identity set-evpn-gateway-ip-ipv6 { base frr-route-map:rmap-set-type; description "Set EVPN gateway IP overlay index IPv6"; } identity set-l3vpn-nexthop-encapsulation { base frr-route-map:rmap-set-type; description "Accept L3VPN traffic over other than LSP encapsulation"; } grouping extcommunity-non-transitive-types { leaf two-octet-as-specific { type boolean; default false; description "Non-Transitive Two-Octet AS-Specific Extended Community"; } } typedef route-distinguisher { type string { pattern '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + '6[0-4][0-9]{3}|' + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|' + '42949672[0-8][0-9]|' + '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|' + '42949[0-5][0-9]{4}|' + '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|' + '42[0-8][0-9]{7}|4[01][0-9]{8}|' + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|' + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|' + '25[0-5])\.){3}([0-9]|[1-9][0-9]|' + '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|' + '655[0-2][0-9]|' + '65[0-4][0-9]{2}|6[0-4][0-9]{3}|' + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' + '(2:(429496729[0-5]|42949672[0-8][0-9]|' + '4294967[01][0-9]{2}|' + '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' + '4294[0-8][0-9]{5}|' + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):' + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + '6[0-4][0-9]{3}|' + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' + '(6(:[a-fA-F0-9]{2}){6})|' + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):' + '[0-9a-fA-F]{1,12})|' + '((6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + '6[0-4][0-9]{3}|' + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|' + '42949672[0-8][0-9]|' + '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|' + '42949[0-5][0-9]{4}|' + '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|' + '42[0-8][0-9]{7}|4[01][0-9]{8}|' + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0)|' + '((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|' + '25[0-5])\.){3}([0-9]|[1-9][0-9]|' + '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|' + '655[0-2][0-9]|' + '65[0-4][0-9]{2}|6[0-4][0-9]{3}|' + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' + '((429496729[0-5]|42949672[0-8][0-9]|' + '4294967[01][0-9]{2}|' + '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' + '4294[0-8][0-9]{5}|' + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):' + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + '6[0-4][0-9]{3}|' + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' + '((6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + '6[0-4][0-9]{3}|' + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0).' + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + '6[0-4][0-9]{3}|' + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):' + '(429496729[0-5]|42949672[0-8][0-9]|' + '4294967[01][0-9]{2}|' + '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' + '4294[0-8][0-9]{5}|' + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))'; } description "A Route Distinguisher is an 8-octet value used to distinguish routes from different BGP VPNs (RFC 4364). A Route Distinguisher will have the same format as a Route Target as per RFC 4360 and will consist of two or three fields: a 2-octet Type field, an administrator field, and, optionally, an assigned number field. According to the data formats for types 0, 1, 2, and 6 as defined in RFC 4360, RFC 5668, and RFC 7432, the encoding pattern is defined as: 0:2-octet-asn:4-octet-number 1:4-octet-ipv4addr:2-octet-number 2:4-octet-asn:2-octet-number 6:6-octet-mac-address Additionally, a generic pattern is defined for future route discriminator types: 2-octet-other-hex-number:6-octet-hex-number Some valid examples are 0:100:100, 1:1.1.1.1:100, 2:1234567890:203, and 6:26:00:08:92:78:00. The following route distinguisher with two fields are also accepted : 10000:44 1.2.3.4:44."; reference "RFC 4360: BGP Extended Communities Attribute. RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs). RFC 5668: 4-Octet AS Specific BGP Extended Community. RFC 7432: BGP MPLS-Based Ethernet VPN."; } typedef extcommunity-lb-type { type enumeration { enum "explicit-bandwidth" { value 0; description "Bandwidth value in Mbps"; } enum "cumulative-bandwidth" { value 1; description "Cumulative bandwidth of all multipaths (outbound-only)"; } enum "computed-bandwidth" { value 2; description "Internally computed bandwidth based on number of multipaths (outbound-only)"; } } description "ext-community link bandwidth types."; } typedef asn-type { type union { type uint32 { range "1..4294967295"; } type string { pattern '(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|' + '6[0-4][0-9]{3}|65[0-4][0-9]{2}|' + '655[0-2][0-9]|6553[0-5])\.' + '(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|' + '65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])' { error-message "AS dot should be in the form [0..65535].[0..65535]."; } pattern '^0\.0$' { modifier "invert-match"; error-message "AS dot can't be equal to 0.0."; } } } } typedef color-list { type string { pattern '((429496729[0-5]|42949672[0-8][0-9]|' + '4294967[0-1][0-9]{2}|429496[0-6][0-9]{3}|' + '42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|' + '4[0-1][0-9]{8}|[1-3][0-9]{9}|' + '[1-9][0-9]{0,8})(\s*))+'; } description "The color-list type represent a set of colors of value (1..4294967295) values are separated by white spaces"; reference "RFC 9012 - The BGP Tunnel Encapsulation Attribute"; } augment "/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:rmap-match-condition/frr-route-map:match-condition" { case local-preference { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:match-local-preference')"; leaf local-preference { type uint32 { range "0..4294967295"; } } } case alias { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:match-alias')"; leaf alias { type string; } } case script { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:match-script')"; leaf script { type string; } } case origin { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:match-origin')"; leaf origin { type enumeration { enum "egp" { value 0; description "Remote EGP"; } enum "igp" { value 1; description "Local IGP"; } enum "incomplete" { value 2; description "Unknown heritage"; } } } } case rpki { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:rpki')"; leaf rpki { type enumeration { enum "invalid" { value 0; description "Invalid prefix"; } enum "notfound" { value 1; description "Prefix not found"; } enum "valid" { value 2; description "Valid prefix"; } } } } case rpki-extcommunity { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:rpki-extcommunity')"; leaf rpki-extcommunity { type enumeration { enum "valid" { value 0; description "Valid prefix"; } enum "notfound" { value 1; description "Prefix not found"; } enum "invalid" { value 2; description "Invalid prefix"; } } } } case probability { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:probability')"; leaf probability { type uint8 { range "0..100"; } } } case source-vrf { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:source-vrf')"; leaf source-vrf { type string; } } case peer { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:peer')"; choice peer { description "Value of the peer"; case peer-ipv4-address { description "IP address of peer"; leaf peer-ipv4-address { type inet:ipv4-address; } } case peer-interface { description "Interface name of peer"; leaf peer-interface { type string; } } case peer-ipv6-address { description "IPv6 address of peer"; leaf peer-ipv6-address { type inet:ipv6-address; } } case peer-local { description "Static or Redistributed routes"; leaf peer-local { type boolean; } } } } case access-list-name { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:mac-address-list') or " + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:as-path-list') or " + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:ip-route-source') or " + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:ip-route-source-prefix-list')"; description "Access-list name"; leaf list-name { type filter:access-list-name; } } case evpn-default-route { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:evpn-default-route')"; description "Match default EVPN type-5 route"; leaf evpn-default-route { type empty; } } case evpn-vni { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:evpn-vni')"; description "Match eVPN VNI"; leaf evpn-vni { type uint32 { range "1..16777215"; } } } case evpn-route-type { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:evpn-route-type')"; description "Match eVPN route-type"; leaf evpn-route-type { type enumeration { enum "macip" { value 0; description "Mac-IP route"; } enum "multicast" { value 1; description "IMET route"; } enum "prefix" { value 2; description "Prefix route"; } enum "ead" { value 3; description "Ethernet Auto-Discovery route"; } enum "es" { value 4; description "Ethernet Segment route"; } } } } case evpn-rd { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:evpn-rd')"; description "Match eVPN route-distinguisher"; leaf route-distinguisher { type route-distinguisher; } } case comm-list-name { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:match-community') or " + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:match-large-community') or " + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:match-extcommunity')"; container comm-list { leaf comm-list-name { mandatory true; type bgp-filter:bgp-list-name; } leaf comm-list-name-exact-match { type boolean; description "Do exact matching of communities"; } leaf comm-list-name-any { type boolean; description "Do matching of any community"; } } } case ipv4-address { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:ipv4-nexthop')"; leaf ipv4-address { type inet:ipv4-address; description "IPv4 address"; } } case ipv6-address { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:ipv6-nexthop')"; leaf ipv6-address { type inet:ipv6-address; description "IPv6 address"; } } case source-protocol { when "derived-from-or-self(../frr-route-map:condition, 'frr-bgp-route-map:source-protocol')"; leaf source-protocol { type frr-route-types:frr-route-types; } } } augment "/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:rmap-set-action/frr-route-map:set-action" { case distance { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:distance')"; leaf distance { type uint8 { range "1..255"; } } } case extcommunity-none { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:set-extcommunity-none')"; description "Value of the BGP extended community attribute"; leaf extcommunity-none { type boolean; description "No extended community attribute"; } } case extcommunity-rt { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:set-extcommunity-rt')"; description "Value of the ext-community"; leaf extcommunity-rt { type string; description "Set BGP ext-community route-target attribute"; } } case extcommunity-nt { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:set-extcommunity-nt')"; description "Value of the ext-community"; leaf extcommunity-nt { type string; description "Set BGP ext-community node-target attribute"; } } case extcommunity-soo { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:set-extcommunity-soo')"; description "Value of the ext-community"; leaf extcommunity-soo { type string; description "Set BGP ext-community site-of-origin attribute"; } } case extcommunity-lb { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:set-extcommunity-lb')"; container extcommunity-lb { description "Value of the ext-community."; leaf lb-type { mandatory true; type frr-bgp-route-map:extcommunity-lb-type; } leaf bandwidth { when "../lb-type = 'explicit-bandwidth'"; mandatory true; type uint16 { range "1..25600"; } description "Bandwidth value in Mbps"; } uses extcommunity-non-transitive-types; } } case extcommunity-color { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:set-extcommunity-color')"; description "Value of the ext-community"; leaf extcommunity-color { type color-list; description "Set BGP ext-community color attribute with a list of colors"; reference "RFC9012"; } } case ipv4-address { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:ipv4-vpn-address')"; description "Set the IPv4 address"; leaf ipv4-address { type inet:ipv4-address; } } case ipv4-nexthop { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:set-ipv4-nexthop')"; leaf ipv4-nexthop { type string; } } case ipv6-address { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:ipv6-nexthop-global') or " + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:ipv6-vpn-address')"; description "Set the IPv6 address"; leaf ipv6-address { type inet:ipv6-address; } } case preference { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:ipv6-prefer-global') or " + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:ipv6-peer-address')"; leaf preference { type boolean; } } case label-index { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:label-index')"; leaf label-index { type uint32 { range "0..1048560"; } } } case local-pref { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:set-local-preference')"; leaf local-pref { type string; } } case weight { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:weight')"; leaf weight { type uint32 { range "0..4294967295"; } } } case origin { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:set-origin')"; leaf origin { type enumeration { enum "egp" { value 0; description "Remote EGP"; } enum "igp" { value 1; description "Local IGP"; } enum "incomplete" { value 2; description "Unknown heritage"; } } } } case originator-id { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:originator-id')"; leaf originator-id { type inet:ipv4-address; } } case table { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:table')"; leaf table { type uint32 { range "1..4294967295"; } } } case atomic-aggregate { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:atomic-aggregate')"; leaf atomic-aggregate { type empty; } } case aigp-metric { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:aigp-metric')"; leaf aigp-metric { type string; description "Set BGP AIGP attribute (AIGP Metric TLV)"; } } case as-path-prepend { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:as-path-prepend')"; choice as-path-prepend { description "Value of the BGP AS-path attribute"; case prepend-as { description "Prepend the mentioned AS-path"; leaf prepend-as-path { type string; } } case last-as { description "Prepend the last ASN in the AS-path"; leaf last-as { type uint8 { range "1..10"; } } } } } case as-path-exclude { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:as-path-exclude')"; leaf exclude-as-path { type string; description "Exclude the mentioned AS-path"; } } case as-path-replace { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:as-path-replace')"; leaf replace-as-path { type string; description "Replace ASNs to local AS number"; } } case community { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:set-community')"; choice community { description "Value of the BGP community attribute"; case none { description "No community attribute"; leaf community-none { type boolean; } } case community-string { description "Community string"; leaf community-string { type string; } } } } case large-community { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:set-large-community')"; choice large-community { description "Value of the BGP large-community attribute"; case none { description "No large-community attribute"; leaf large-community-none { type boolean; } } case large-community-string { description "Large-Community string"; leaf large-community-string { type string; } } } } case aggregator { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:aggregator')"; container aggregator { leaf aggregator-asn { type asn-type; mandatory true; description "ASN of the aggregator"; } leaf aggregator-address { type inet:ipv4-address; mandatory true; description "IPv4 address of the aggregator"; } } } case comm-list-name { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:comm-list-delete') or " + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:large-comm-list-delete') or " + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:extended-comm-list-delete')"; leaf comm-list-name { type bgp-filter:bgp-list-name; } } case evpn-gateway-ip-ipv4 { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:set-evpn-gateway-ip-ipv4')"; description "Set EVPN gateway IP overlay index IPv4"; leaf evpn-gateway-ip-ipv4 { type inet:ipv4-address; } } case evpn-gateway-ip-ipv6 { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:set-evpn-gateway-ip-ipv6')"; description "Set EVPN gateway IP overlay index IPv6"; leaf evpn-gateway-ip-ipv6 { type inet:ipv6-address; } } case l3vpn-nexthop-encapsulation { when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:set-l3vpn-nexthop-encapsulation')"; description "Accept L3VPN traffic over other than LSP encapsulation"; leaf l3vpn-nexthop-encapsulation { type enumeration { enum "gre" { value 0; description "GRE protocol"; } } } } } }