Russ White
b3a35b33c0
Merge pull request #11344 from opensourcerouting/feature/wrap_ipv4_unicast_valid
...
bgpd: Wrap IPV4_CLASS_DE into ipv4_unicast_valid() helper
2022-06-14 07:48:32 -04:00
Donatas Abraitis
e24a6977ee
bgpd: Wrap IPV4_CLASS_DE into ipv4_unicast_valid() helper
...
Linux kernel allows (FreeBSD/OpenBSD too) using reserved class E IP ranges.
This is a preparation commit that ease the global switch to allow/deny
class E IP ranges in FRR.
https://datatracker.ietf.org/doc/html/draft-chen-ati-adaptive-ipv4-address-space
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-06-13 20:44:52 +03:00
Donatas Abraitis
0f05ea43b0
bgpd: Initialize attr->local_pref to the configured default value
...
When we use network/redistribute local_preference is configured inproperly
when using route-maps something like:
```
network 100.100.100.100/32 route-map rm1
network 100.100.100.200/32 route-map rm2
route-map rm1 permit 10
set local-preference +10
route-map rm2 permit 10
set local-preference -10
```
Before:
```
root@spine1-debian-11:~# vtysh -c 'show bgp ipv4 unicast 100.100.100.100/32 json' | jq '.paths[].locPrf'
10
root@spine1-debian-11:~# vtysh -c 'show bgp ipv4 unicast 100.100.100.200/32 json' | jq '.paths[].locPrf'
0
```
After:
```
root@spine1-debian-11:~# vtysh -c 'show bgp ipv4 unicast 100.100.100.100/32 json' | jq '.paths[].locPrf'
110
root@spine1-debian-11:~# vtysh -c 'show bgp ipv4 unicast 100.100.100.200/32 json' | jq '.paths[].locPrf'
90
```
Set local-preference as the default value configured per BGP instance, but
do not set LOCAL_PREF flag by default.
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-06-06 10:28:50 +03:00
Donald Sharp
1bb1c0cfc3
bgpd: Add ability to match match peer <PEERGROUPNAME>
...
Allow the end operator to match `match peer <PEERGROUPNAME>`
in a route-map. If the end operator defines interface
based peers and peer-groups that have names that overlap
the interface based peer will match first.
Fixes : #11316
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-05-31 12:31:19 -04:00
Donatas Abraitis
77e3d82167
bgpd: Add set as-path replace <any|ASN>
cmd for route-maps
...
```
route-map tstas permit 10
set as-path replace 1
exit
```
Before:
```
donatas-laptop(config-router-af)# do show ip bgp 10.10.10.10/32
BGP routing table entry for 10.10.10.10/32, version 13
Paths: (1 available, best #1 , table default)
Advertised to non peer-group peers:
192.168.10.65
65000 1 2 3 123
192.168.10.65 from 192.168.10.65 (10.10.10.11)
Origin IGP, metric 0, valid, external, best (First path received)
Last update: Mon Apr 25 10:39:50 2022
```
After:
```
donatas-laptop(config-router-af)# do show ip bgp 10.10.10.10/32
BGP routing table entry for 10.10.10.10/32, version 15
Paths: (1 available, best #1 , table default)
Advertised to non peer-group peers:
192.168.10.65
65000 65010 2 3 123
192.168.10.65 from 192.168.10.65 (10.10.10.11)
Origin IGP, metric 0, valid, external, best (First path received)
Last update: Mon Apr 25 10:40:16 2022
```
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-04-25 14:05:22 +03:00
Russ White
bd751c0700
Merge pull request #10987 from opensourcerouting/fix/bgp_conditional_advertisements_rmap_change_peer_groups
...
bgpd: Do not forget to update conditional advertisements rmaps for peer-groups
2022-04-13 15:00:14 -04:00
Donatas Abraitis
58cf5c088a
bgpd: Reuse bgp_attr_set_ecommunity() for setting attribute flags
...
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-04-12 22:09:28 +03:00
Donatas Abraitis
9d34440bf8
bgpd: Reuse bgp_attr_set_[l]community() for setting attribute flags
...
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-04-12 22:09:28 +03:00
Donatas Abraitis
c0945b7828
bgpd: Allow setting BGP [large]community in route-maps
...
Before:
```
spine1-debian-11(config-route-map)# bgp community alias 65001:65001 test1
spine1-debian-11(config)# route-map rm permit 10
spine1-debian-11(config-route-map)# set community 65001:65001
% Malformed communities attribute
```
After:
```
spine1-debian-11(config)# bgp community alias 65001:65001 test1
spine1-debian-11(config)# route-map rm permit 10
spine1-debian-11(config-route-map)# set community 65001:65001
spine1-debian-11(config-route-map)#
```
Same for large-communities.
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-04-09 17:34:06 +03:00
Donatas Abraitis
9118301e48
bgpd: Do not forget to update conditional advertisements rmaps for peer-groups
...
When the peer is configured for the first time:
```
neighbor P1 peer-group
neighbor P1 remote-as external
neighbor P1 advertise-map ADV exist-map EXIST
neighbor 10.10.10.1 peer-group P1
```
Conditional advertisements route-maps are not updated and cond. advertisements
do not work until FRR restarted. BGP sessions clear does not help.
Or even changing peer-group for a peer, causes this bug to kick in.
```
no neighbor 10.10.10.1
neighbor 10.10.10.1 peer-group P2
```
With this fix, cond. advertisements start working immediatelly.
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-04-08 22:43:01 +03:00
Donald Sharp
581776faa1
*: Fix spelling of ojbect
...
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-04-02 07:46:19 -04:00
Russ White
d2dfd26697
Merge pull request #10636 from ton31337/fix/use_get_set_for_communities
...
bgpd: Reuse get/set helpers for attr->community
2022-02-28 09:52:50 -05:00
Donatas Abraitis
9a706b42fb
bgpd: Reuse get/set helpers for attr->community
...
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2022-02-25 10:02:30 +02:00
Donald Sharp
cc9f21da22
*: Change thread->func to return void instead of int
...
The int return value is never used. Modify the code
base to just return a void instead.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-02-23 19:56:04 -05:00
Chirag Shah
2514d23190
bgpd: evpn route-map match esr type-4 route-type
...
Testing:
After fix:
bharat(config-route-map)# match evpn route-type
1 EAD (Type-1) route
2 MAC-IP (Type-2) route
3 Multicast (Type-3) route
4 Ethernet Segment (Type-4) route <----
5 Prefix (Type-5) route
ead EAD (Type-1) route
es Ethernet Segment (Type-4) route
macip MAC-IP (Type-2) route
multicast Multicast (Type-3) route
prefix Prefix (Type-5) route
bharat(config-route-map)# match evpn route-type 4
bharat(config-route-map)# do show running-config
Building configuration...
...
!
route-map ALLOW_EVPN_R permit 10
match evpn route-type es <----
exit
BGP:
route-map: ALLOW_EVPN_R Invoked: 0 Optimization: enabled Processed Change: false
permit, sequence 10 Invoked 0
Match clauses:
evpn route-type es <-----
Set clauses:
Call clause:
Action:
Exit routemap
Signed-off-by: Chirag Shah <chirag@nvidia.com>
2022-02-17 09:55:00 -08:00
Chirag Shah
bd44ab0831
bgpd: evpn route-map match ead type-1 route-type
...
Add evpn mh route type-1 (EAD) to match clause
of route-map.
Ticket: issue#10461
Reviewed By:
Testing Done:
With fix:
vtep1(config-route-map)# match evpn route-type
1 EAD (Type-1) route
2 MAC-IP (Type-2) route
3 Multicast (Type-3) route
5 Prefix (Type-5) route
ead EAD (Type-1) route
macip MAC-IP (Type-2) route
multicast Multicast (Type-3) route
prefix Prefix (Type-5) route
vtep1# show running-config bgpd
....
route-map HOST_ALLOW_1 permit 1
match evpn route-type ead
vtep1# show route-map HOST_ALLOW_1
BGP:
route-map: HOST_ALLOW_1 Invoked: 6 Optimization: disabled Processed Change: false
permit, sequence 1 Invoked 6
Match clauses:
ip address prefix-list LOCAL_HOST_VRF1
evpn route-type ead
Signed-off-by: Chirag Shah <chirag@nvidia.com>
2022-02-17 09:55:00 -08:00
Donatas Abraitis
1bcf3a96de
bgpd: Use get/set helpers for attr->lcommunity
...
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2022-02-10 11:04:03 +02:00
Donatas Abraitis
b53e67a389
bgpd: Use bgp_attr_[sg]et_ecommunity for struct ecommunity
...
This is an extra work before moving attr->ecommunity to attra_extra struct.
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2022-02-04 15:56:20 +02:00
Russ White
f1f6716d4a
Merge pull request #9610 from iqras23/best_path
...
bgpd: VRF-Lite fix best path selection
2021-11-30 16:14:34 -05:00
Donatas Abraitis
82f191a213
bgpd: Add an ability to match ipv6 next-hop by prefix-list
...
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2021-11-24 16:28:31 +02:00
Donatas Abraitis
bc63ba980f
bgpd: Add an ability to match ipv6 next-hop by access-list
...
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2021-11-23 13:47:26 +02:00
Igor Ryzhov
03030106ce
bgpd, lib: fix inconsistency of match ip/ipv6 next-hop commands
...
For IPv4 matching, we have "match ip next-hop address A.B.C.D".
For IPv6 matching, we have "match ipv6 next-hop X:X::X:X".
To have consistency, let's add "address" keyword to IPv6 commands.
Old commands are preserved as hidden for backward compatibility.
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-11-19 21:11:52 +03:00
Iqra Siddiqui
89c3ebe6ca
bgpd: NULL check for original bgp info
...
Description:
EVPN routes marked as imported routes,
having bgp path info's extra, where as
they are not truly imported routes,
so original bgp info will be null.
Co-authored-by: Kantesh Mundaragi <kmundaragi@vmware.com>
Signed-off-by: Iqra Siddiqui <imujeebsiddi@vmware.com>
2021-11-19 07:33:22 +05:30
Donatas Abraitis
c60dec369a
lib: Add autocomplete for access-lists
...
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2021-10-31 20:26:06 +02:00
Donatas Abraitis
943224a13a
lib: Add autocomplete for prefix-list under route-maps
...
```
exit1-debian-9(config-route-map)# match ip route-source prefix-list ?
<cr>
PREFIXLIST_NAME IP prefix-list name
p1 p2
```
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2021-10-28 14:01:13 +03:00
Russ White
f727c6ae8a
Merge pull request #9837 from idryzhov/cleanup-if-by-name-vrf-all
...
*: fix usage of if_lookup_by_name_all_vrf
2021-10-27 15:29:39 -04:00
Igor Ryzhov
16e2b641fa
Merge pull request #9847 from ton31337/feature/prefix-list_autocomplete
...
bgpd: Add autocomplete for set/match community/large/ext lists
2021-10-20 18:45:07 +03:00
Donatas Abraitis
a2099c1d64
bgpd: Add autocomplete for community/large/extcommunity stuff
...
```
exit1-debian-9(config)# route-map test1 permit 10
exit1-debian-9(config-route-map)# match community ?
(1-99) Community-list number (standard)
(100-500) Community-list number (expanded)
COMMUNITY_LIST_NAME Community-list name
testas
exit1-debian-9(config-route-map)# match large-community ?
(1-99) Large Community-list number (standard)
(100-500) Large Community-list number (expanded)
LCOMMUNITY_LIST_NAME Large Community-list name
LCL-ORIGINATED-ALL
exit1-debian-9(config-route-map)#
```
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2021-10-20 14:41:24 +03:00
Donatas Abraitis
2a342b352a
bgpd: Add autocomplete for as-path filters
...
```
exit1-debian-9# show bgp as-path-access-list
<cr>
AS_PATH_FILTER_NAME AS path access list name
acl1 acl2
json JavaScript Object Notation
exit1-debian-9(config)# route-map testas permit 10
exit1-debian-9(config-route-map)# match as-path ?
AS_PATH_FILTER_NAME AS path access-list name
acl1 acl2
```
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2021-10-19 15:44:20 +03:00
Igor Ryzhov
de4f1a66fb
bgpd: don't use if_lookup_by_name_all_vrf
...
if_lookup_by_name_all_vrf doesn't work correctly with netns VRF backend
as the same index may be used in multiple netns simultaneously.
Use the appropriate VRF when looking for the interface.
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-10-15 03:42:52 +03:00
Igor Ryzhov
7e86999140
*: cleanup number-named access-lists in CLI
...
There's no more difference between number-named and word-named access-lists.
This commit removes separate arguments for number-named ACLs from CLI.
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-10-08 19:25:41 +03:00
Russ White
8811ce0beb
Merge pull request #9469 from ton31337/fix/extcommunity_bandwidth_floating_to_hex
...
bgpd: Use IEEE-754 Floating Point for storing extcommunity bandwidth
2021-09-01 12:56:45 -04:00
Donatas Abraitis
27aa23a43b
bgpd: Add neighbor PEER link-bw-encoding-ieee
...
This is to avoid breaking changes between existing deployments of
extended community for bandwidth encoding. By default FRR uses uint32
to encode bandwidth, which is not as the draft requires (IEEE floating-point).
This switch enables the required encoding per-peer.
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2021-08-30 14:21:49 +03:00
Donatas Abraitis
bb4dcdd13e
bgpd: Add an ability to set extcommunity to none in route-maps
...
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2021-08-18 14:14:52 +03:00
Donatas Abraitis
bd67b727e9
bgpd: Return rmap match if large-community alias found
...
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2021-08-17 12:19:43 +03:00
Donatas Abraitis
3af20fda0b
Merge pull request #9369 from idryzhov/comm-alias-memleaks
...
bgpd: fix various memleaks when using community aliases
2021-08-16 17:24:21 +03:00
Igor Ryzhov
5838d3b452
Merge pull request #9265 from ton31337/fix/extcommunity_lb_route-map_persistent
...
bgpd: Extended community bandwidth fixes
2021-08-16 12:26:25 +03:00
Don Slice
6ba0adacd2
bgpd: Stop prepending peer-as if self-originated and lastas configured
...
Problem seen where if "set aspath-prepend last-as" configured and
applied outbound, we prepend the peer's asn which causes our self-
originated routes to be denied.
Signed-off-by: Don Slice <dslice@nvidia.com>
2021-08-13 15:25:48 -04:00
Igor Ryzhov
1ca0a0bc92
bgpd: fix memory leaks in route_match_alias
...
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-08-13 14:28:41 +03:00
Donatas Abraitis
3b225ee799
bgpd: Don't set non-transitive
for extcommunity bandwidth by default
...
Before:
```
~/frr# vtysh -c 'conf' -c 'route-map testas permit 10' -c 'set extcommunity bandwidth 321'
~/frr# vtysh -c 'show route-map testas' | grep 321
extcommunity bandwidth 321 non-transitive
~/frr# vtysh -c 'show run' | grep 321
set extcommunity bandwidth 321 non-transitive
```
After:
```
~/frr# vtysh -c 'conf' -c 'route-map testas permit 10' -c 'set extcommunity bandwidth 321'
~/frr# vtysh -c 'show route-map testas' | grep 321
extcommunity bandwidth 321
~/frr# vtysh -c 'show run' | grep 321
set extcommunity bandwidth 321
~/frr# vtysh -c 'conf' -c 'route-map testas permit 20' -c 'set extcommunity bandwidth 321 non-tra'
~/frr# vtysh -c 'show run' | grep 321
set extcommunity bandwidth 321
set extcommunity bandwidth 321 non-transitive
```
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2021-08-03 14:38:54 +03:00
Quentin Young
41d3d77496
Merge pull request #8982 from dlqs/lua-func-stack
2021-08-02 13:51:35 +00:00
Donald Lee
78f1ac2574
lib: Add new MTYPE for script results
...
Signed-off-by: Donald Lee <dlqs@gmx.com>
2021-07-26 23:27:56 +08:00
Donald Lee
59a35b667d
bgpd: Use enum as input to Lua script
...
Signed-off-by: Donald Lee <dlqs@gmx.com>
2021-07-23 20:43:24 +08:00
Donald Lee
bca62fe045
bgpd: fix typo
...
Signed-off-by: Donald Lee <dlqs@gmx.com>
2021-07-23 20:43:24 +08:00
Donatas Abraitis
35a45e8070
bgpd: Use strcmp comparing BGP alias with an actual entered alias
...
It might be a case when a partial match is hit and this needs to be fixed.
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2021-07-23 15:14:54 +03:00
Donatas Abraitis
2690f18cc8
bgpd: Add route-map match alias
command
...
Will be handy to filter BGP prefixes by using BGP community alias
instead of numerical community values.
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2021-07-21 09:26:14 +03:00
Donald Lee
2ce634e2ad
lib: formatting
...
Signed-off-by: Donald Lee <dlqs@gmx.com>
2021-07-19 23:28:01 +08:00
Donald Lee
9d6204020d
bgpd: Remove warning about not finding script
...
Signed-off-by: Donald Lee <dlqs@gmx.com>
2021-07-18 06:32:03 +08:00
Donald Lee
62435f8ce1
bgpd: Use int encoder/decoder
...
Signed-off-by: Donald Lee <dlqs@gmx.com>
2021-07-18 06:32:03 +08:00
Donald Lee
0972af957a
bgpd: Update bgpd example with get_result
...
Signed-off-by: Donald Lee <dlqs@gmx.com>
2021-07-18 06:32:03 +08:00