summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/vrf.c2
-rw-r--r--zebra/zebra_vrf.h9
2 files changed, 7 insertions, 4 deletions
diff --git a/lib/vrf.c b/lib/vrf.c
index a44cc50f92..de29f45f8f 100644
--- a/lib/vrf.c
+++ b/lib/vrf.c
@@ -780,8 +780,6 @@ DEFUN_NOSH(vrf_exit,
"exit-vrf",
"Exit current mode and down to previous mode\n")
{
- /* We have to set vrf context to default vrf */
- VTY_PUSH_CONTEXT(VRF_NODE, vrf_get(VRF_DEFAULT, VRF_DEFAULT_NAME));
cmd_exit(vty);
return CMD_SUCCESS;
}
diff --git a/zebra/zebra_vrf.h b/zebra/zebra_vrf.h
index b2b0fcfbb2..57dd0c20ad 100644
--- a/zebra/zebra_vrf.h
+++ b/zebra/zebra_vrf.h
@@ -192,8 +192,13 @@ struct zebra_vrf {
* special macro to allow us to get the correct zebra_vrf
*/
#define ZEBRA_DECLVAR_CONTEXT(A, B) \
- struct vrf *A = VTY_GET_CONTEXT(vrf); \
- struct zebra_vrf *B = (A) ? A->info : vrf_info_lookup(VRF_DEFAULT)
+ struct vrf *A; \
+ if (vty->node == CONFIG_NODE) \
+ A = vrf_lookup_by_id(VRF_DEFAULT); \
+ else \
+ A = VTY_GET_CONTEXT(vrf); \
+ VTY_CHECK_CONTEXT(A); \
+ struct zebra_vrf *B = A->info
static inline vrf_id_t zvrf_id(struct zebra_vrf *zvrf)
{