summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRenato Westphal <renato@opensourcerouting.org>2016-10-28 16:53:38 -0200
committerRenato Westphal <renato@opensourcerouting.org>2016-11-28 16:18:35 -0200
commit60f1637a8b35b2968e64dd1619e499033c8068bb (patch)
tree02da824e63a7ae43aae9750c2d6f3046deee0a00 /lib
parentf30c50b99223be343b7fe1ae9e374602ec0d93d5 (diff)
lib: fix creation of pre-provisioned VRFs
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>
Diffstat (limited to 'lib')
-rw-r--r--lib/vrf.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/lib/vrf.c b/lib/vrf.c
index d87e38ebe8..13884aba62 100644
--- 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);