mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-04 16:57:43 +00:00
vtysh, zebra: print exit-vrf at end of vrf context
Need to explicitly exit this context otherwise we risk ambiguities between global and vrf context commands Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
This commit is contained in:
parent
30568a7d7c
commit
c319e19dbd
@ -671,7 +671,7 @@ int vtysh_mark_file(const char *filename)
|
|||||||
} else if ((prev_node == BGP_EVPN_VNI_NODE)
|
} else if ((prev_node == BGP_EVPN_VNI_NODE)
|
||||||
&& (tried == 1)) {
|
&& (tried == 1)) {
|
||||||
fprintf(outputfile, "exit-vni\n");
|
fprintf(outputfile, "exit-vni\n");
|
||||||
} else if (prev_node == VRF_NODE) {
|
} else if (prev_node == VRF_NODE && (tried == 1)) {
|
||||||
fprintf(outputfile, "exit-vrf\n");
|
fprintf(outputfile, "exit-vrf\n");
|
||||||
} else if ((prev_node == KEYCHAIN_KEY_NODE)
|
} else if ((prev_node == KEYCHAIN_KEY_NODE)
|
||||||
&& (tried == 1)) {
|
&& (tried == 1)) {
|
||||||
|
@ -185,6 +185,12 @@ void vtysh_config_parse_line(void *arg, const char *line)
|
|||||||
== 0) {
|
== 0) {
|
||||||
config_add_line(config->line, line);
|
config_add_line(config->line, line);
|
||||||
config->index = INTERFACE_NODE;
|
config->index = INTERFACE_NODE;
|
||||||
|
} else if (config->index == VRF_NODE
|
||||||
|
&& strncmp(line, " exit-vrf",
|
||||||
|
strlen(" exit-vrf"))
|
||||||
|
== 0) {
|
||||||
|
config_add_line(config->line, line);
|
||||||
|
config->index = CONFIG_NODE;
|
||||||
} else if (config->index == RMAP_NODE
|
} else if (config->index == RMAP_NODE
|
||||||
|| config->index == INTERFACE_NODE
|
|| config->index == INTERFACE_NODE
|
||||||
|| config->index == LOGICALROUTER_NODE
|
|| config->index == LOGICALROUTER_NODE
|
||||||
|
@ -524,10 +524,8 @@ static int vrf_config_write(struct vty *vty)
|
|||||||
if (zvrf->l3vni)
|
if (zvrf->l3vni)
|
||||||
vty_out(vty, "vni %u\n", zvrf->l3vni);
|
vty_out(vty, "vni %u\n", zvrf->l3vni);
|
||||||
vty_out(vty, "!\n");
|
vty_out(vty, "!\n");
|
||||||
}
|
} else {
|
||||||
|
vty_frame(vty, "vrf %s\n", zvrf_name(zvrf));
|
||||||
if (vrf_is_user_cfged(vrf)) {
|
|
||||||
vty_out(vty, "vrf %s\n", zvrf_name(zvrf));
|
|
||||||
if (zvrf->l3vni)
|
if (zvrf->l3vni)
|
||||||
vty_out(vty, " vni %u%s\n", zvrf->l3vni,
|
vty_out(vty, " vni %u%s\n", zvrf->l3vni,
|
||||||
is_l3vni_for_prefix_routes_only(
|
is_l3vni_for_prefix_routes_only(
|
||||||
@ -535,14 +533,15 @@ static int vrf_config_write(struct vty *vty)
|
|||||||
? " prefix-routes-only"
|
? " prefix-routes-only"
|
||||||
: "");
|
: "");
|
||||||
zebra_ns_config_write(vty, (struct ns *)vrf->ns_ctxt);
|
zebra_ns_config_write(vty, (struct ns *)vrf->ns_ctxt);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static_config(vty, zvrf, AFI_IP, SAFI_UNICAST, "ip route");
|
static_config(vty, zvrf, AFI_IP, SAFI_UNICAST, "ip route");
|
||||||
static_config(vty, zvrf, AFI_IP, SAFI_MULTICAST, "ip mroute");
|
static_config(vty, zvrf, AFI_IP, SAFI_MULTICAST, "ip mroute");
|
||||||
static_config(vty, zvrf, AFI_IP6, SAFI_UNICAST, "ipv6 route");
|
static_config(vty, zvrf, AFI_IP6, SAFI_UNICAST, "ipv6 route");
|
||||||
|
|
||||||
if (vrf->vrf_id != VRF_DEFAULT)
|
if (zvrf_id(zvrf) != VRF_DEFAULT)
|
||||||
vty_out(vty, "!\n");
|
vty_endframe(vty, " exit-vrf\n!\n");
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user