mirror of
https://git.proxmox.com/git/mirror_frr
synced 2026-02-01 17:19:52 +00:00
lib: handle bogus VRF backend type
And use an enum... Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
This commit is contained in:
parent
efc7191bbe
commit
7239d3d9e6
@ -593,10 +593,15 @@ int vrf_get_backend(void)
|
||||
return vrf_backend;
|
||||
}
|
||||
|
||||
void vrf_configure_backend(int vrf_backend_netns)
|
||||
int vrf_configure_backend(enum vrf_backend_type backend)
|
||||
{
|
||||
vrf_backend = vrf_backend_netns;
|
||||
if (backend > VRF_BACKEND_MAX)
|
||||
return -1;
|
||||
|
||||
vrf_backend = backend;
|
||||
vrf_backend_configured = 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int vrf_handler_create(struct vty *vty, const char *vrfname,
|
||||
|
||||
15
lib/vrf.h
15
lib/vrf.h
@ -101,9 +101,12 @@ RB_PROTOTYPE(vrf_name_head, vrf, name_entry, vrf_name_compare)
|
||||
DECLARE_QOBJ_TYPE(vrf)
|
||||
|
||||
/* Allow VRF with netns as backend */
|
||||
#define VRF_BACKEND_VRF_LITE 0
|
||||
#define VRF_BACKEND_NETNS 1
|
||||
#define VRF_BACKEND_UNKNOWN 2
|
||||
enum vrf_backend_type {
|
||||
VRF_BACKEND_VRF_LITE,
|
||||
VRF_BACKEND_NETNS,
|
||||
VRF_BACKEND_UNKNOWN,
|
||||
VRF_BACKEND_MAX,
|
||||
};
|
||||
|
||||
extern struct vrf_id_head vrfs_by_id;
|
||||
extern struct vrf_name_head vrfs_by_name;
|
||||
@ -292,10 +295,10 @@ extern void vrf_install_commands(void);
|
||||
* VRF utilities
|
||||
*/
|
||||
|
||||
/* API for configuring VRF backend
|
||||
* should be called from zebra only
|
||||
/*
|
||||
* API for configuring VRF backend
|
||||
*/
|
||||
extern void vrf_configure_backend(int vrf_backend_netns);
|
||||
extern int vrf_configure_backend(enum vrf_backend_type backend);
|
||||
extern int vrf_get_backend(void);
|
||||
extern int vrf_is_backend_netns(void);
|
||||
|
||||
|
||||
@ -3031,7 +3031,14 @@ static void zclient_capability_decode(ZAPI_CALLBACK_ARGS)
|
||||
uint8_t mpls_enabled;
|
||||
|
||||
STREAM_GETL(s, vrf_backend);
|
||||
vrf_configure_backend(vrf_backend);
|
||||
|
||||
if (vrf_backend < 0 || vrf_configure_backend(vrf_backend)) {
|
||||
flog_err(EC_LIB_ZAPI_ENCODE,
|
||||
"%s: Garbage VRF backend type: %d\n", __func__,
|
||||
vrf_backend);
|
||||
goto stream_failure;
|
||||
}
|
||||
|
||||
|
||||
memset(&cap, 0, sizeof(cap));
|
||||
STREAM_GETC(s, mpls_enabled);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user