diff options
| author | Carmine Scarpitta <cscarpit@cisco.com> | 2024-06-06 17:23:11 +0200 |
|---|---|---|
| committer | Carmine Scarpitta <cscarpit@cisco.com> | 2024-06-13 14:54:16 +0200 |
| commit | 1298867671f7fe76c65730afbb9ae54dcd7264be (patch) | |
| tree | 90fc8f8da99d1f355b01ed5068102a673af35b94 /zebra/zebra_srv6.h | |
| parent | 021386a34eb49893ce6b7df16c2fe1096a8fedf6 (diff) | |
zebra: Add support for SRv6 SID formats
Add functionalities to manage SRv6 SID formats (register / unregister /
lookup) and create two SID formats upon SRv6 Manager initialization:
`uncompressed-f4024` and `usid-f3216`.
In future commits, we will add the CLI to allow the user to choose
between the two formats.
Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
Diffstat (limited to 'zebra/zebra_srv6.h')
| -rw-r--r-- | zebra/zebra_srv6.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/zebra/zebra_srv6.h b/zebra/zebra_srv6.h index 21936c3323..a645c5cc0d 100644 --- a/zebra/zebra_srv6.h +++ b/zebra/zebra_srv6.h @@ -16,12 +16,37 @@ #include <pthread.h> #include <plist.h> +/* Default config for SRv6 SID `usid-f3216` format */ +#define ZEBRA_SRV6_SID_FORMAT_USID_F3216_NAME "usid-f3216" +#define ZEBRA_SRV6_SID_FORMAT_USID_F3216_BLOCK_LEN 32 +#define ZEBRA_SRV6_SID_FORMAT_USID_F3216_NODE_LEN 16 +#define ZEBRA_SRV6_SID_FORMAT_USID_F3216_FUNCTION_LEN 16 +#define ZEBRA_SRV6_SID_FORMAT_USID_F3216_ARGUMENT_LEN 0 +#define ZEBRA_SRV6_SID_FORMAT_USID_F3216_LIB_START 0xE000 +#define ZEBRA_SRV6_SID_FORMAT_USID_F3216_ELIB_START 0xFE00 +#define ZEBRA_SRV6_SID_FORMAT_USID_F3216_ELIB_END 0xFEFF +#define ZEBRA_SRV6_SID_FORMAT_USID_F3216_WLIB_START 0xFFF0 +#define ZEBRA_SRV6_SID_FORMAT_USID_F3216_WLIB_END 0xFFF7 +#define ZEBRA_SRV6_SID_FORMAT_USID_F3216_EWLIB_START 0xFFF7 + +/* Default config for SRv6 SID `uncompressed` format */ +#define ZEBRA_SRV6_SID_FORMAT_UNCOMPRESSED_F4024_NAME "uncompressed-f4024" +#define ZEBRA_SRV6_SID_FORMAT_UNCOMPRESSED_F4024_BLOCK_LEN 40 +#define ZEBRA_SRV6_SID_FORMAT_UNCOMPRESSED_F4024_NODE_LEN 24 +#define ZEBRA_SRV6_SID_FORMAT_UNCOMPRESSED_F4024_FUNCTION_LEN 16 +#define ZEBRA_SRV6_SID_FORMAT_UNCOMPRESSED_F4024_ARGUMENT_LEN 0 +#define ZEBRA_SRV6_SID_FORMAT_UNCOMPRESSED_F4024_EXPLICIT_RANGE_START 0xFF00 +#define ZEBRA_SRV6_SID_FORMAT_UNCOMPRESSED_F4024_FUNC_UNRESERVED_MIN 0x40 + /* SRv6 instance structure. */ struct zebra_srv6 { struct list *locators; /* Source address for SRv6 encapsulation */ struct in6_addr encap_src_addr; + + /* SRv6 SID formats */ + struct list *sid_formats; }; /* declare hooks for the basic API, so that it can be specialized or served @@ -74,4 +99,8 @@ extern int release_daemon_srv6_locator_chunks(struct zserv *client); extern void zebra_srv6_encap_src_addr_set(struct in6_addr *src_addr); extern void zebra_srv6_encap_src_addr_unset(void); +void zebra_srv6_sid_format_register(struct zebra_srv6_sid_format *format); +void zebra_srv6_sid_format_unregister(struct zebra_srv6_sid_format *format); +struct zebra_srv6_sid_format *zebra_srv6_sid_format_lookup(const char *name); + #endif /* _ZEBRA_SRV6_H */ |
