mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-06 04:36:45 +00:00
Merge pull request #3772 from pguibert6WIND/vrf_backend_unknown
Vrf backend unknown
This commit is contained in:
commit
c9146c85a0
6
lib/if.c
6
lib/if.c
@ -396,6 +396,7 @@ struct interface *if_get_by_name(const char *name, vrf_id_t vrf_id)
|
||||
struct interface *ifp;
|
||||
|
||||
switch (vrf_get_backend()) {
|
||||
case VRF_BACKEND_UNKNOWN:
|
||||
case VRF_BACKEND_NETNS:
|
||||
ifp = if_lookup_by_name(name, vrf_id);
|
||||
if (ifp)
|
||||
@ -1279,6 +1280,11 @@ static int lib_interface_create(enum nb_event event,
|
||||
vrf->name);
|
||||
return NB_ERR_VALIDATION;
|
||||
}
|
||||
|
||||
/* if VRF is netns or not yet known - init for instance
|
||||
* then assumption is that passed config is exact
|
||||
* then the user intent was not to use an other iface
|
||||
*/
|
||||
if (vrf_get_backend() == VRF_BACKEND_VRF_LITE) {
|
||||
ifp = if_lookup_by_name_all_vrf(ifname);
|
||||
if (ifp && ifp->vrf_id != vrf->vrf_id) {
|
||||
|
@ -56,6 +56,7 @@ struct vrf_id_head vrfs_by_id = RB_INITIALIZER(&vrfs_by_id);
|
||||
struct vrf_name_head vrfs_by_name = RB_INITIALIZER(&vrfs_by_name);
|
||||
|
||||
static int vrf_backend;
|
||||
static int vrf_backend_configured;
|
||||
static struct zebra_privs_t *vrf_daemon_privs;
|
||||
static char vrf_default_name[VRF_NAMSIZ] = VRF_DEFAULT_NAME_INTERNAL;
|
||||
|
||||
@ -613,12 +614,15 @@ int vrf_is_backend_netns(void)
|
||||
|
||||
int vrf_get_backend(void)
|
||||
{
|
||||
if (!vrf_backend_configured)
|
||||
return VRF_BACKEND_UNKNOWN;
|
||||
return vrf_backend;
|
||||
}
|
||||
|
||||
void vrf_configure_backend(int vrf_backend_netns)
|
||||
{
|
||||
vrf_backend = vrf_backend_netns;
|
||||
vrf_backend_configured = 1;
|
||||
}
|
||||
|
||||
int vrf_handler_create(struct vty *vty, const char *vrfname,
|
||||
|
@ -101,8 +101,9 @@ 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_VRF_LITE 0
|
||||
#define VRF_BACKEND_NETNS 1
|
||||
#define VRF_BACKEND_UNKNOWN 2
|
||||
|
||||
extern struct vrf_id_head vrfs_by_id;
|
||||
extern struct vrf_name_head vrfs_by_name;
|
||||
|
Loading…
Reference in New Issue
Block a user