diff options
| -rw-r--r-- | lib/vrf.c | 2 | ||||
| -rw-r--r-- | zebra/zebra_vrf.h | 9 | 
2 files changed, 7 insertions, 4 deletions
@@ -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)  {  | 
