Commit Graph

33192 Commits

Author SHA1 Message Date
Donatas Abraitis
00b365d67f bgpd: Show LLGR timers under show bgp neighbor
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-09-13 11:30:45 +03:00
Donatas Abraitis
47dc0f1354
Merge pull request #14404 from donaldsharp/snmp_mess_ups
tests: snmp tests sometimes fail with `Unable to bind`
2023-09-13 09:52:19 +03:00
Jafar Al-Gharaibeh
7e43a5bf2e
Merge pull request #14399 from opensourcerouting/fix/bgpd_handle_BGP_MAX_ATTR
bgpd: BGP_ATTR_MAX can be 255, allow using it for path attr
2023-09-12 15:12:15 -05:00
Donald Sharp
afe11d5edf tests: snmp tests sometimes fail with Unable to bind
the snmp tests are using zebra.conf to setup the
address that they are binding to and immediately
after that they are starting snmpd.  If snmpd
starts up *before* zebra has installed the address
the bind on the address will fail.  Causing the entire
test to fail.  Modify the snmpd.conf for all our
snmp tests to bind to all addresses.  Things still
work and we no longer have an issue.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-12 13:05:05 -04:00
Donald Sharp
4cf7c2bef3
Merge pull request #14397 from manojvn/mgmt_sb_commands
mgmtd: support bundle commands for mgmt.
2023-09-12 12:05:20 -04:00
Russ White
7159e93f47
Merge pull request #14237 from Keelan10/pbrd-map-leak
pbrd: Free Memory in pbr_map_delete
2023-09-12 11:28:20 -04:00
Mark Stapp
bf4e97c632
Merge pull request #14365 from opensourcerouting/typesafe-const-declutter
Revert "lib: add a frr_each_const macro"
2023-09-12 11:20:50 -04:00
Russ White
7b8f81bcb6
Merge pull request #14379 from donaldsharp/peer_connection_part_two
Peer connection part two
2023-09-12 08:51:50 -04:00
Russ White
986dfa5e5d
Merge pull request #14348 from opensourcerouting/fpm-rr
zebra: support route replace semantic in FPM
2023-09-12 08:45:14 -04:00
Russ White
48d6039e14
Merge pull request #13724 from cscarpitta/feature/isisd-srv6-support
isisd: Add support for SRv6 uSID (RFC 9352)
2023-09-12 08:33:42 -04:00
Donatas Abraitis
12e37cb4a0 bgpd: BGP_ATTR_MAX can be 255, allow using it for path attr discard/withdraw cmds
https://www.rfc-editor.org/rfc/rfc2042.html

says: 255 reserved for development

In FRR, 255 is kinda used too BGP_ATTR_VNC, even more we allow setting 255 in CLI.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-09-12 14:54:08 +03:00
Manoj Naragund
1dfc0d200c mgmtd: support bundle commands for mgmt daemon.
Signed-off-by: Manoj Naragund <mnaragund@vmware.com>
2023-09-12 01:53:04 -07:00
Carmine Scarpitta
69fca0a492 doc: Add documentation for IS-IS SRv6 features
Add documentation for IS-IS SRv6 functionalities (RFC 9352)

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:59 +02:00
Carmine Scarpitta
6d22a6e5db tests: Add isis_srv6_topo1 test for IS-IS SRv6
Add a new topotest `isis_srv6_topo1` for verifying SRv6 functionalities
in IS-IS (RFC 9352).

This topotest consists of nine tests:

* Network convergence after applying SRv6 configuration
* Disable SRv6 Locator on zebra on r1
* Enable SRv6 Locator on zebra on r1
* Disable SRv6 Locator on ISIS on r1
* Enable SRv6 Locator on ISIS on r1
* Disable SRv6 on ISIS on r1
* Enable SRv6 on ISIS on r1
* Disable SRv6 on zebra on r1
* Enable SRv6 on zebra on r1

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:58 +02:00
Carmine Scarpitta
0078f6f53a tests: Update fuzz test to match expected output
Update IS-IS fuzz test to match corrected output after the introduction
of SRv6-related TLVs.

The update was performed using wuschl [1] like this:

$ wuschl rebuild tests/isisd/test_fuzz_isis_tlv
$ gzip -9 tests/isisd/test_fuzz_isis_tlv_tests.h

[1] https://pypi.org/project/wuschl/

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:52 +02:00
Carmine Scarpitta
bfec26bc7a isisd: Make SRv6 interface configurable
Add CLI command and functions to configure the interface used for
installing SRv6 SIDs into Linux data plane

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:51 +02:00
Carmine Scarpitta
dd8f09cc55 yang: Add SRv6 interface to IS-IS YANG model
Add SRv6 interface to the IS-IS YANG model

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:51 +02:00
Carmine Scarpitta
bdbbb26d55 isisd: Make SRv6 Node MSDs customizable
Add CLI commands to customize SRv6 Node MSD values.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:50 +02:00
Carmine Scarpitta
fa7949575a yang: Add SRv6 MSDs to IS-IS YANG model
Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:50 +02:00
Carmine Scarpitta
3a89bbfb99 vtysh: Add CLI nodes for SRv6
Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:50 +02:00
Carmine Scarpitta
899ec39ee5 lib: Add CLI node for SRv6 Node MSD
Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:49 +02:00
Carmine Scarpitta
a1be1942f5 isisd: Remove SIDs when parent locator is deleted
Clean up SRv6 SIDs when the parent locator is deleted.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:49 +02:00
Carmine Scarpitta
71b8056d6d isisd: Initialize/free SRv6 adjacency SIDs list
Initialize/free SRv6 adjacency SIDs list when an IS-IS area is
created/destroyed.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:48 +02:00
Carmine Scarpitta
455aded931 isisd: Extend sid_exist to consider adj SIDs
The function `sid_exist` verifies if a given SRv6 SID has already been
allocated for a given IS-IS area. This commit extends `sid_exist` to
also consider adjacency SIDs when checking for the existence of the SID.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:48 +02:00
Carmine Scarpitta
ee57c710b1 isisd: Extend IS-IS adjacency with SRv6 adj SIDs
Initialize/remove SRv6 SIDs list when an IS-IS adjacency is
created/deleted.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:48 +02:00
Carmine Scarpitta
ecb2675f1e isisd: Add support for SRv6 Adjacency SIDs
An SRv6 adjacency SID is a SID that is associated with a particular
adjacency. Adjacency SIDs are advertised using the SRv6 End.X SID
Sub-TLV (RFC 9352 section #8.1) or SRv6 LAN End.X SID Sub-TLV (RFC 9352
section #8.2).

This commit defines the following Adj SIDs management functions:
* srv6_endx_sid_add_single: add a new SRv6 Adjacency SID
* srv6_endx_sid_del: delete an SRv6 Adjacency SID
* isis_srv6_endx_sid_find: lookup SRv6 End.X SID by type

It also attaches some callbacks to the hooks isis_adj_state_change_hook,
isis_adj_ip_enabled_hook, isis_adj_ip_disabled_hook, which are
responsible for installing/removing an SRv6 Adjacency SID automatically
when the state of an IS-IS adjacency changes.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:47 +02:00
Carmine Scarpitta
7db1a90475 isisd: Add functions to install/remove adj SIDs
Add two functions to install/remove Adjacency SIDs into the data plane
through zebra.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:47 +02:00
Carmine Scarpitta
2566656a6f isisd: Add data structure for SRv6 Adjacency SIDs
An SRv6 adjacency SID is a SID that is associated with a particular
adjacency. Adjacency SIDs are advertised using the SRv6 End.X SID
Sub-TLV (RFC 9352 section #8.1) or SRv6 LAN End.X SID Sub-TLV (RFC 9352
section #8.2).

This commit defines a data structure `srv6_adjacency` for storing
information about an SRv6 Adjacency SID. This data structure will be
used to support SRv6 Adjacency SIDs functionalities in future commits.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:46 +02:00
Carmine Scarpitta
df121f68e7 isisd: Make MTYPE_ISIS_SUBSUBTLV non-static
We need to allocate memory SRv6 SID Structure Sub-Sub-TLV in
isis_srv6.c. MTYPE_ISIS_SUBSUBTLV is statically defined in isis_tlvs.c
and therefore is not visible in isis_srv6.c. Let's make
MTYPE_ISIS_SUBSUBTLV non-static to provide visibility to the external
world..

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:46 +02:00
Carmine Scarpitta
d56c0d23b0 isisd: Unpack SRv6 (LAN) End.X SID Sub-TLV
Extend the Extended IS Reachability TLV unpack function to unpack the
SRv6 End.X SID Sub-TLV and SRv6 LAN End.X SID Sub-TLV, if present.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:45 +02:00
Carmine Scarpitta
8b6a73c306 isisd: Pack SRv6 (LAN) End.X SID Sub-TLV
Extend the Extended IS Reachability TLV pack function to pack the SRv6
End.X SID Sub-TLV and SRv6 LAN End.X SID Sub-TLV, if present.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:45 +02:00
Carmine Scarpitta
294c9c76bf isisd: Add SRv6 (LAN) End.X SID Sub-TLV codepoints
Add SRv6 End.X SID Sub-TLV and SRv6 LAN End.X SID Sub-TLV codepoints
(defined in "IS-IS Sub-TLVs for TLVs Advertising Neighbor Information"
IANA registry). These codepoints will be used in future commits to
pack/unpack corresponding Sub-TLVs.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:44 +02:00
Carmine Scarpitta
648a158802 isisd: Add SRv6 End.X SID to Sub-TLV format func
Extend the Extended IS Reachability TLV format function to show the SRv6
End.X SID Sub-TLV and SRv6 LAN End.X SID Sub-TLV, if present.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:44 +02:00
Carmine Scarpitta
eb16e0b0bc isisd: Add flags for SRv6 (LAN) End.X SID Sub-TLV
SRv6 End.X SID Sub-TLV (RFC 9352 section #8.1) and SRv6 LAN End.X SID
Sub-TLV (RFC 9352 section #8.2) contain a `flag` field. Currently, three
flags are defined:
* B-Flag: Backup flag
* S-Flag: Set flag
* P-Flag: Persistent flag

This commit defines three constants representing these flags.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:43 +02:00
Carmine Scarpitta
e083282e83 isisd: Add SRv6 End.X SID to Sub-TLV copy func
Extend the Extended IS Reachability TLV copy function to copy the SRv6
End.X SID Sub-TLV and SRv6 LAN End.X SID Sub-TLV, if present.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:43 +02:00
Carmine Scarpitta
3740efacfb isisd: Add SRv6 End.X SID to IS ext reach Sub-TLVs
Add SRv6 End.X SID Sub-TLV and SRv6 LAN End.X SID Sub-TLV to the
Extended IS Reachability Sub-TLVs data structure and perform proper
initialization/free when the Sub-TLVs data structure is
allocated/destroyed.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:42 +02:00
Carmine Scarpitta
f912df37de isisd: Add SRv6 LAN End.X SID Sub-TLV data struct
Add a data structure to represent an SRv6 LAN End.X SID Sub-TLV as per
RFC 9352 section #8.2.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:42 +02:00
Carmine Scarpitta
6b09d53cc1 isisd: Add SRv6 End.X SID Sub-TLV data structure
Add a data structure to represent an SRv6 End.X SID Sub-TLV as per
RFC 9352 section #8.1.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:42 +02:00
Carmine Scarpitta
65c4a84293 isisd: Update copyright info in isis_tlvs.[c,h]
Add copyright claim for "IS-IS Extensions to Support SRv6" (RFC 9352)
to isis_tlvs.c and isis_tlvs.h.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:41 +02:00
Carmine Scarpitta
604fcd30db isisd: Advertise SRv6 Locator in Prefix Reach TLV
According to RFC 9352 section #5, the SRv6 Locators associated with
algorithms 0 and 1 should be also advertised in a Prefix Reachability
TLV (236 or 237) to allow legacy routers (i.e., routers that do not
support SRv6) installing a forwarding entry for algorithms 0 and 1 SRv6
traffic.

This commits extend IS-IS to advertise SRv6 Locators in IPv6
Reachability TLV.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:41 +02:00
Carmine Scarpitta
48d1cd1748 isisd: Add SRv6 Locator TLV to the LSP
Add the SRv6 Locator TLV and its Sub-TLV and Sub-Sub-TLVs to the LSP.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:40 +02:00
Carmine Scarpitta
c682450894 isisd: Add structure when building End SID Sub-TLV
Encode SRv6 SID Structure Sub-Sub-TLV when building the SRv6 End SID
Sub-TLV.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:40 +02:00
Carmine Scarpitta
81579d7de2 isisd: Add func to build Sub-Sub-TLV from End SID
Add a function to build an SRv6 SID Structure Sub-Sub-TLV (RFC 9352
section #9) to advertise the structure of a specific SRv6 End SID passed
as an argument.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:39 +02:00
Carmine Scarpitta
cfc90fc490 isisd: Add End SID when building SRv6 Locator TLV
Encode SRv6 End SID Sub-TLVs when building the SRv6 Locator TLV.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:39 +02:00
Carmine Scarpitta
1804d70cbd isisd: Add func to build Sub-TLV from SRv6 End SID
Add a function to build an SRv6 End SID TLV (RFC 9352 section #7.2) to
advertise a specific SRv6 End SID passed as an argument.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:38 +02:00
Carmine Scarpitta
2aaa75a6f3 isisd: Add function to build TLV from SRv6 Locator
Add a function to build an SRv6 Locator TLV (RFC 9352 section #7.1) to
advertise a specific SRv6 Locator passed as an argument.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:38 +02:00
Carmine Scarpitta
7e340af13b isisd: Add func to fill in SID Struct Sub-Sub-TLV
Add a function to fill in an SRv6 SID Structure Sub-Sub-TLV with
information from an SRv6 SID (RFC 9352 section #9).

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:37 +02:00
Carmine Scarpitta
43786ccfdc isisd: Add func to fill in an SRv6 End SID Sub-TLV
Add a function to fill in an SRv6 End SID Sub-TLV with information from
an SRv6 End SID (RFC 9352 section #7.2).

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:37 +02:00
Carmine Scarpitta
6cd23c6d95 isisd: Add function to fill in an SRv6 Locator TLV
Add a function to fill in an SRv6 Locator TLV with information from an
SRv6 locator (RFC 9352 section #7.1).

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:37 +02:00
Carmine Scarpitta
791ca51ecf isisd: Add SRv6 locator data structure
Add a data structure to represent an SRv6 locator (RFC 9352
section 7.1)

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:36 +02:00