]> git.puffer.fish Git - mirror/frr.git/commitdiff
lib: fix creation of pre-provisioned VRFs
authorRenato Westphal <renato@opensourcerouting.org>
Fri, 28 Oct 2016 18:53:38 +0000 (16:53 -0200)
committerRenato Westphal <renato@opensourcerouting.org>
Mon, 28 Nov 2016 18:18:35 +0000 (16:18 -0200)
If we configure a VRF that doesn't match any device in the kernel, we'll
fall in the first case of the vrf_get() function. In this function,
a vrf structure is callocated and it's vrf_id is never set explicitly,
which means it's set to zero (the vrf-id of the default VRF). When this
happens, commands like "router-id A.B.C.D vrf ..." will act on the
default VRF and not on the pre-provisioned VRF.  To fix this, always
set the vrf_id of pre-provisioned VRFs to VRF_UNKNOWN.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
lib/vrf.c

index d87e38ebe8b7a22402703e5027b7ad8926c3d7dc..13884aba62040162ad920a091f244688c3d8a6d3 100644 (file)
--- a/lib/vrf.c
+++ b/lib/vrf.c
@@ -124,6 +124,7 @@ vrf_get (vrf_id_t vrf_id, const char *name)
         zlog_debug ("VRF(%u) %s is created.",
                    vrf_id, (name) ? name : "(NULL)");
       strcpy (vrf->name, name);
+      vrf->vrf_id = VRF_UNKNOWN;
       listnode_add_sort (vrf_list, vrf);
       if_init (&vrf->iflist);
       QOBJ_REG (vrf, vrf);