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 */  | 
