Commit Graph

11 Commits

Author SHA1 Message Date
Carmine Scarpitta
f49937e340 isisd: Add func to unset the SRv6 locator
Add a function to unset the SRv6 locator for a specific IS-IS area.

This function calls `isis_zebra_srv6_manager_release_locator_chunk()` to
ask zebra to release the locator chunk owned by IS-IS and removes the
chunk from the area's chunks list.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 17:34:55 +02:00
Carmine Scarpitta
2e8d254ac7 isisd: Add SRv6 locator chunks to SRv6 config
Add a list of SRv6 locator chunks allocated to a specific IS-IS area.
The list is initialized when the IS-IS area is created and freed when
the IS-IS area is destroyed. Subsequent commits will introduce the
possibility to allocate and release locator chunks.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 17:34:52 +02:00
Carmine Scarpitta
1a9c3a1e57 isisd: Add SRv6 locator name to SRv6 configuration
Add the name of the SRv6 locator to use with IS-IS to the per-area SRv6
configuration. If an SRv6 locator is not configured for an IS-IS
instance, the locator name is an empty string. When an IS-IS instance is
configured to use an SRv6 locator,  the locator name stores the name of
the selected locator.

Subsequent commits will add the possibility to set and unset an SRv6
locator for a specific IS-IS instance.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 17:34:51 +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
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
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