Commit Graph

33310 Commits

Author SHA1 Message Date
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
Carmine Scarpitta
975ce69a27 isisd: Add data structure for SRv6 information
Add `struct isis_srv6_db` to store per-area SRv6 information.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-08-04 09:29:15 +02:00
Carmine Scarpitta
d52c6c88b2 isisd: Add isis_srv6.[c, h] files
Add `isis_srv6.c` and `isis_srv6.h` files needed to support SRv6 in IS-IS
(as per RFC 9352).

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-08-04 09:29:15 +02:00
Donatas Abraitis
dd58cd4d38 bgpd: Use SET_FLAG when setting AIGP attribute flag
Just reuse an existing more-readable code.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-08-03 22:54:54 +03:00
Donatas Abraitis
fa2749f58e bgpd: Handle srv6 attributes the same way as others using setters/getters
To be consistent and error-safe.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-08-03 22:53:21 +03:00
Donatas Abraitis
312b8c02a6 bgpd: Handle encap attributes the same way as others using setters/getters
To be consistent and error-safe.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-08-03 22:52:09 +03:00
Donatas Abraitis
09b4537755 bgpd: Handle transit attributes the same way as others using setters/getters
To be consistent and error-safe.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-08-03 22:48:40 +03:00
Donatas Abraitis
0a0137da85 bgpd: Handle cluster attribute the same way as others using setters/getters
To be consistent and error-safe.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-08-03 22:44:17 +03:00
Donatas Abraitis
7636bcc765 bgpd: Check if we have such a peer before handling software capability
Do not pass NULL for peer_established(), just in case.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-08-03 22:00:27 +03:00
Donatas Abraitis
b2b47bb4a9 bgpd: Remove deprecated COMMUNITY_INTERNET community
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-08-03 17:12:19 +03:00
Donatas Abraitis
f3279abe13 bgpd: Add all other capabilities for dynamic handling (placeholders)
Gonna be covered later with further PRs. Now adding them to avoid compiler
errors due to uncovered switch/cases.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-08-03 17:08:33 +03:00
Donatas Abraitis
bf11a9eb25 bgpd: Handle software version capability dynamicaly
We have dynamic capability support, but it handles only MP capability.

With this change, we can enable software version capability dynamicaly, without
resetting the session.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-08-03 17:08:33 +03:00
Donatas Abraitis
8bf9ea0611 tests: Check if we can handle software version capability dynamicaly
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-08-03 17:08:32 +03:00
Donald Sharp
6f6b7e1706 doc: Add --v6-with-v4-nexthops documentation
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-08-03 08:57:55 -04:00
Donald Sharp
0435b31bb8 bgpd: Allow bgp to specify if it will allow v6 routing with v4 nexthops
Add a `--v6-with-v4-nexthop` cli to bgp to allow it to peer with
neighbors in the configuration where the interface has no v6 addresses
at all and there is a v4 address that is usable as a v4 address
embedded in a v6 address.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-08-03 08:25:20 -04:00
Donald Sharp
95002ded3e bgpd: Do not allow a peer to come up on v6 if we have no ability to route
Modify bgp to not allow a v6 peer to come up if the v6 afi is negotiated
and the outgoing interface has no v6 address as well as zebra does
not support the v6 with v4 nexthop capabilities that some dataplanes
allow.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-08-03 08:25:20 -04:00
Donald Sharp
052debc3ee bgpd: Have bgp notice the zebra ability to use v6_with_v4_nexthops
Store the data.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-08-03 08:25:20 -04:00
Donald Sharp
68f52d7a0c lib, zebra: Send up whether or not v6_with_v4_nexthops are supported
After Zebra knows it's capability surrounding v6 with v4 nexthops
have it send this ability up to interested parties.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-08-03 08:25:20 -04:00
Donald Sharp
1f5611c06d zebra: Allow zebra cli to accept v6 routes with v4 nexthops
add --v6-with-v4-nexthop cli to zebra to allow operator to
specify that this functionality is allowed.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-08-03 08:25:20 -04:00
Donald Sharp
7415f1e120
Merge pull request #14129 from samanvithab/bgpd_frr_fix
bgpd: Fix for session reset issue caused by malformed core attributes  in update message
2023-08-02 13:48:14 -04:00
Donatas Abraitis
dd08585f1a
Merge pull request #13466 from donaldsharp/remove_unneeded_test_files
tests: Remove unused file in isis_snmp test
2023-08-02 17:26:26 +03:00
Donald Sharp
cbbbf64f9a tests: Remove unused file in isis_snmp test
The */show_ip_route.ref files are never used, let's remove them
to prevent any future issues.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-08-02 07:15:59 -04:00
Samanvitha B Bhargav
70ff940fd1 bgpd: Fix session reset issue caused by malformed core attributes
RCA:
On encountering any attribute error for core attributes in update message,
the error handling is set to 'treat as withdraw' and
further parsing of the remaining attributes is skipped.
But the stream pointer is not being correctly adjusted to
point to the next NLRI field skipping the rest of the attributes.
This leads to incorrect parsing of the NLRI field,
which causes BGP session to reset.

Fix:
The stream pointer offset is rightly adjusted to point to the NLRI field correctly
when the malformed attribute is encountered and remaining attribute parsing is skipped.

Signed-off-by: Samanvitha B Bhargav <bsamanvitha@vmware.com>
2023-08-01 23:17:19 -07:00
Jafar Al-Gharaibeh
ec8ae8f093
Merge pull request #14125 from opensourcerouting/fix/drop_unused_lua_stuff
lib: Do not use time_t as a special Lua encoder/decoder
2023-08-01 23:52:56 -05:00
Donatas Abraitis
5da58d355a
Merge pull request #14116 from donaldsharp/test_naming
Test naming
2023-08-01 18:13:02 +03:00
Donald Sharp
901437c26b
Merge pull request #14071 from achernavin22/ospf-fix-abr-type-chg
ospfd: fix changing ABR type between standard and shortcut
2023-08-01 10:42:54 -04:00
Donald Sharp
369bdcaa1e tests: Convert d1 and d2 to output and expected in gen_json_diff_report
The output of gen_json_diff_report is used all over the place and
it outputs d1 and d2.  Let's change this to output and expected
as that is how it is used.  Should help with debugging.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-08-01 07:57:16 -04:00
Donald Sharp
29848dbe98 tests: Run black over lib/topotest.py
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-08-01 07:57:16 -04:00
Donald Sharp
0099493f1e tests: Start using output and expected vs d1 and d2
Let us start using output and expected in lib/topotest.py
because when we see output it is confusing what d1 is
versus what d2 is.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-08-01 07:57:16 -04:00
Donald Sharp
031d4586f0
Merge pull request #14117 from patrasar/pimv6_13893
pimd, pim6d: Don't set SRC_STREAM flag on LHR
2023-08-01 07:30:57 -04:00