Commit Graph

33339 Commits

Author SHA1 Message Date
Donald Sharp
ad5329c7b0 bgpd: bgp_vrf is already deref'ed in all paths
The usage of bgp_vrf does not need to be tested
at this point since it's already been derefed in all
paths to this point.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-08-07 15:11:05 -04:00
G. Paul Ziemba
1c900cea90 zebra: zebra_dplane.[ch]: use pbr common struct in ctx
Signed-off-by: G. Paul Ziemba <paulz@labn.net>
2023-08-07 06:24:53 -07:00
Francois Dumontet
459e1cd903 tests: add one test to bgp_set_aspath_replace.py
add support of  set as-path replace as-path-access-list

Signed-off-by: Francois Dumontet <francois.dumontet@6wind.com>
2023-08-07 12:30:34 +02:00
Francois Dumontet
958340e935 bgpd: add set as-path exclude acl-list command
A route-map applied on incoming BGP updates is not able
to replace an unwanted as segments by another one.
unwanted as segment are based on an AS path access-list.

The below configuration illustrates the case:

router bgp 65001

address-family ipv4 unicast
 neighbor 192.168.1.2 route-map rule_2 in
exit-address-family

bgp as-path access-list RULE permit ^65

route-map rule_2 permit 10
 set as-path replace as-path-access-list RULE 6000

```
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)
```

After:

```
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
      6000 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)
```

Signed-off-by: Francois Dumontet <francois.dumontet@6wind.com>
2023-08-07 12:30:34 +02:00
Donald Sharp
529203905b
Merge pull request #14151 from opensourcerouting/fix/improve_addpath_selected_test
tests: Improve bgp_addpath_best_selected topotest
2023-08-06 17:01:16 -04:00
Donatas Abraitis
4735badb87
Merge pull request #14152 from idryzhov/vtysh-filter
vtysh: remove unused cmd_filter_type
2023-08-06 20:14:13 +03:00
Donatas Abraitis
ceea81be77
Merge pull request #14139 from donaldsharp/v6_v4_nexthops
V6 v4 nexthops
2023-08-06 20:11:19 +03:00
Donatas Abraitis
6d91d1c768
Merge pull request #14149 from donaldsharp/cleanup_bad_commands
Cleanup bad commands
2023-08-06 20:10:23 +03:00
Donatas Abraitis
50c5908c9f bgpd: Check if peer is established and dynamic capability-aware
Add this logic inside bgp_capability_send() instead of repeating the whole
logic before calling bgp_capability_send().

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-08-05 23:02:59 +03:00
Donatas Abraitis
2b5236dbb3 tests: Check if role capability is exchanged via dynamic capability
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-08-05 22:57:06 +03:00
Donatas Abraitis
454d37aec2 bgpd: Handle role capability using dynamic capability
When setting local-role for the neighbor, force sending ROLE capability via
dynamic capability if it's enabled.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-08-05 22:44:45 +03:00
Igor Ryzhov
cedba2406f vtysh: fix checking empty interface node
vtysh is not supposed to show empty interface node in running config,
however the corresponding check is broken and empty nodes are shown.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2023-08-05 00:46:45 +03:00
Igor Ryzhov
8c098c31db vtysh: remove unused cmd_filter_type
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2023-08-05 00:45:10 +03:00
Donatas Abraitis
0ba5225b92 tests: Drop duplicate neighbor definition
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-08-04 23:22:38 +03:00
Donald Sharp
d65249aa65
Merge pull request #14148 from opensourcerouting/fix/tests_bgp_addpath_failing_sometimes
tests: Use a correct syntax for defining keepalive/hold timers
2023-08-04 15:44:10 -04:00
Donatas Abraitis
dcf133fdf6 tests: Improve bgp_addpath_best_selected topotest
Test everything else only after we have an initial good state.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-08-04 22:34:17 +03:00
Mark Stapp
a593a319f5
Merge pull request #14147 from idryzhov/static-fix-nexthop-vrf
staticd: fix comparison of nexthop-vrf
2023-08-04 15:09:39 -04:00
Donald Sharp
d676e8c412 tests: isis_snmp, ldpd doesn't talk to snmp
isis_snmp.test_isis_snmp/r1/ldpd.log:2023/08/04 12:49:54 LDP: [SHWNK-NWT5S][EC 100663304] No such command on config line 8: agentx

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-08-04 13:06:56 -04:00
Donald Sharp
5eceb87d06 tests: babel_topo1 Another no such command
babel_topo1.test_babel_topo1/r3/babeld.log:2023/08/04 12:46:55 BABELD: [SHWNK-NWT5S][EC 100663304] No such command on config line 17:  redistirbute ipv6 connected

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-08-04 13:05:42 -04:00
Donald Sharp
27de57ec33 tests: config_timing calls non-existent command
./config_timing.test_config_timing/r1/zebra.log:2023/08/04 12:34:29 ZEBRA: [SHWNK-NWT5S][EC 100663304] No such command on config line 7: exit-route-map
./config_timing.test_config_timing/r1/zebra.log:2023/08/04 12:34:29 ZEBRA: [SHWNK-NWT5S][EC 100663304] No such command on config line 10: exit-route-map

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-08-04 13:04:48 -04:00
Donald Sharp
8487fd07d6 tests: bfd_ospf_topo1 there is no passive interface command
./bfd_ospf_topo1.test_bfd_ospf_topo1/rt3/ospfd.log:2023/08/04 12:46:58 OSPF: [SHWNK-NWT5S][EC 100663304] No such command on config line 28:  passive interface lo
./bfd_ospf_topo1.test_bfd_ospf_topo1/rt5/ospfd.log:2023/08/04 12:46:59 OSPF: [SHWNK-NWT5S][EC 100663304] No such command on config line 27:  passive interface lo
./bfd_ospf_topo1.test_bfd_ospf_topo1/rt1/ospfd.log:2023/08/04 12:46:56 OSPF: [SHWNK-NWT5S][EC 100663304] No such command on config line 30:  passive interface lo
./bfd_ospf_topo1.test_bfd_ospf_topo1/rt4/ospfd.log:2023/08/04 12:47:00 OSPF: [SHWNK-NWT5S][EC 100663304] No such command on config line 27:  passive interface lo
./bfd_ospf_topo1.test_bfd_ospf_topo1/rt2/ospfd.log:2023/08/04 12:46:57 OSPF: [SHWNK-NWT5S][EC 100663304] No such command on config line 28:  passive interface lo

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-08-04 13:03:44 -04:00
Donald Sharp
965405e25a tests: ospf6_gr_topo1 attempts, but fails to set the password
Irrelevant and let's just remove it.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-08-04 13:01:54 -04:00
Donald Sharp
59f24a5b06 tests: cspf_topo1 has import-te in sharpd.conf
This will never work, let's remove

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-08-04 13:00:36 -04:00
Donald Sharp
a3dda89f45 tests: bgp_update_delay is not even using frr cli syntax
Let's just remove it.   Looks like iproute2 configuration

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-08-04 12:58:53 -04:00
Donald Sharp
dd02d8926c tests: bgp_vpnv4_noretain test turns on isis but never uses it
The test was reading in the bgp config for the isis config and
clearly the test is working without this.  So let's remove
from the test the usage of isisd

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-08-04 12:56:11 -04:00
Donatas Abraitis
40558baf47 tests: Use a correct syntax for defining keepalive/hold timers
BGP: [SHWNK-NWT5S][EC 100663304] No such command on config line 2:  timers 3 10

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-08-04 19:31:05 +03:00
Donald Sharp
e30a10cff5
Merge pull request #14140 from opensourcerouting/fix/handle_more_capabilities_via_dynamic_capability
bgpd: Handle software version capability dynamicaly
2023-08-04 11:26:43 -04:00
Igor Ryzhov
3eb4d42e62 staticd: fix comparison of nexthop-vrf
When displaying the configuration, the order of nexthop-vrf is wrong,
because the default VRF is not displayed, but still compared as the word
"default". Therefore it is placed in the middle of the list instead of
always being the first one.

Before the fix:
```
ip route 1.1.1.0/24 2.2.2.2 nexthop-vrf ccc
ip route 1.1.1.0/24 2.2.2.2
ip route 1.1.1.0/24 2.2.2.2 nexthop-vrf eee
```

After the fix:
```
ip route 1.1.1.0/24 2.2.2.2
ip route 1.1.1.0/24 2.2.2.2 nexthop-vrf ccc
ip route 1.1.1.0/24 2.2.2.2 nexthop-vrf eee
```

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2023-08-04 18:24:51 +03:00
Donald Sharp
b036c510f2
Merge pull request #14145 from opensourcerouting/fix/handling_cluster_transit
bgpd: Some cleanup and consistency "improvements"
2023-08-04 07:14:55 -04:00
Donald Sharp
d51e5044cc
Merge pull request #14141 from opensourcerouting/fix/remove_deprecated_internet_community
bgpd: Remove deprecated COMMUNITY_INTERNET community
2023-08-04 07:09:05 -04:00
Carmine Scarpitta
b85ecd30a9 isisd: Add SRv6 Capabilities Sub-TLV to the LSPs
Add SRv6 Capabilities Sub-TLV to the Router Capabilities TLV in the LSPs
generated with the `lsp_build()` function.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-08-04 09:29:16 +02:00
Carmine Scarpitta
94b08a4910 isisd: Unpack SRv6 Capabilities Sub-TLV
Extend Router Capabilities TLV unpack function to unpack SRv6
Capabilities Sub-TLV (RFC 9352 section #2).

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-08-04 09:29:16 +02:00
Carmine Scarpitta
451ef283cc isisd: Pack SRv6 Capabilities Sub-TLV
Extend Router Capabilities TLV pack function to pack Router Capabilies
Sub-TLV (RFC 9352 section #2).

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-08-04 09:29:16 +02:00
Carmine Scarpitta
0457d8f16b isisd: Add SRv6 Cap Sub-TLV to Router Cap TLV
Add SRv6 Capabilities Sub-TLV to the IS-IS Router Capabilities TLV data
structure. SRv6 Capabilities Sub-TLV includes SRv6 Flags (RFC 9352
section #2) and Maximum SRv6 SID Depths (RFC 9352 section #4).

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-08-04 09:29:16 +02:00
Carmine Scarpitta
dc33260043 isisd: Add IS-IS TLV Codepoints for SRv6
Add Codepoints for SRv6 Capabilities Sub-TLV, SRH Max SL MSD,
SRH Max End Pop MSD, SRH Max H.encaps MSD, SRH Max End D MSD
as per RFC 9352.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-08-04 09:29:16 +02:00
Carmine Scarpitta
340fdf6a80 isisd: Add support for SRv6 MSDs
Add Maximum SRv6 SID Depths (MSDs) parameters as per RFC 9352 section #4
to the per-area IS-IS SRv6 Data Base. Currently the MSD values are
hardcoded.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-08-04 09:29:16 +02:00
Carmine Scarpitta
5e21aaf1e7 isisd: Add function to terminate the SRv6 module
`isis_srv6_area_term()` cleans up SRv6 information for a specific
IS-IS area. This commit adds a new function `isis_srv6_term()` that will
be used to perform global SRv6 cleanup.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-08-04 09:29:16 +02:00
Carmine Scarpitta
5fb8d335ca isisd: Add function to initialize the SRv6 module
`isis_srv6_area_init()` initializes SRv6 information for a specific
IS-IS area. This commit adds a new function `isis_srv6_init()` that will
be used to perform global SRv6 initialization.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-08-04 09:29:16 +02:00
Carmine Scarpitta
9c2191903a isisd: Add CLI command to disable SRv6
r1# conf
r1(config)# router isis <area-tag>
r1(config-router)# no segment-routing srv6

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-08-04 09:29:16 +02:00
Carmine Scarpitta
c57ff2d123 isisd: Add CLI command to enable SRv6
r1# conf
r1(config)# router isis <area-tag>
r1(config-router)# segment-routing srv6

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-08-04 09:29:16 +02:00
Carmine Scarpitta
eb918dbd25 isisd: Add nb command to show if SRv6 is enabled
Add a northbound command to show whether SRv6 is enabled or not.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-08-04 09:29:16 +02:00
Carmine Scarpitta
e2e4210267 isisd: Add nb command to enable/disable SRv6
Add a northbound command to enable/disable SRv6 on a given IS-IS area.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-08-04 09:29:16 +02:00
Carmine Scarpitta
3ffdeb64b7 isisd: Init SRv6 enabled flag to its default value
When SRv6 is initialized on a given IS-IS area, set the administrative
enabled status to the default value defined by the YANG model.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-08-04 09:29:15 +02:00
Carmine Scarpitta
7487c97c82 isisd: Add YANG path for SRv6
Add YANG path `/frr-isisd:isis/instance/segment-routing-srv6`.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-08-04 09:29:15 +02:00
Carmine Scarpitta
0616677aeb yang: Add SRv6 node to IS-IS YANG model
Add `segment-routing-srv6` node to the IS-IS YANG model.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-08-04 09:29:15 +02:00
Carmine Scarpitta
91905e44b9 isisd: Add a bool to enable/disable SRv6
Add a boolean flag to indicate whether SRv6 is administratively enabled
on a given IS-IS area or not.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-08-04 09:29:15 +02:00
Carmine Scarpitta
af3141985f isisd: Terminate SRv6 when an area is created
Call `isis_srv6_area_term()` to cleanup the per-area SRv6 information
when an IS-IS area is terminated.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-08-04 09:29:15 +02:00
Carmine Scarpitta
943bce654e isisd: Initialize SRv6 when an area is created
Call `isis_srv6_area_init()` to initialize the per-area SRv6 DB when an
IS-IS area is created.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-08-04 09:29:15 +02:00
Carmine Scarpitta
9c51247ea3 isisd: Add func to terminate SRv6 for a given area
Add function to terminate SRv6 for a given IS-IS area.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-08-04 09:29:15 +02:00
Carmine Scarpitta
0359045d97 isisd: Add function to initialize SRv6 DB
Add function to initialize per-area SRv6 DB (`area->srv6db`).

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-08-04 09:29:15 +02:00