mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-06-14 13:22:02 +00:00
Merge pull request #8078 from idryzhov/fix-zebra-vni
zebra: fix vni configuration in default vrf
This commit is contained in:
commit
b9f1b4d3d3
@ -201,19 +201,6 @@ lib_vrf_zebra_ribs_rib_route_nexthop_group_frr_nexthops_nexthop_get_next(
|
|||||||
struct nb_cb_get_next_args *args);
|
struct nb_cb_get_next_args *args);
|
||||||
int lib_vrf_zebra_ribs_rib_route_nexthop_group_frr_nexthops_nexthop_get_keys(
|
int lib_vrf_zebra_ribs_rib_route_nexthop_group_frr_nexthops_nexthop_get_keys(
|
||||||
struct nb_cb_get_keys_args *args);
|
struct nb_cb_get_keys_args *args);
|
||||||
int lib_vrf_zebra_ribs_rib_create(struct nb_cb_create_args *args);
|
|
||||||
int lib_vrf_zebra_ribs_rib_destroy(struct nb_cb_destroy_args *args);
|
|
||||||
const void *lib_vrf_zebra_ribs_rib_get_next(struct nb_cb_get_next_args *args);
|
|
||||||
int lib_vrf_zebra_ribs_rib_get_keys(struct nb_cb_get_keys_args *args);
|
|
||||||
const void *
|
|
||||||
lib_vrf_zebra_ribs_rib_lookup_entry(struct nb_cb_lookup_entry_args *args);
|
|
||||||
const void *
|
|
||||||
lib_vrf_zebra_ribs_rib_route_get_next(struct nb_cb_get_next_args *args);
|
|
||||||
int lib_vrf_zebra_ribs_rib_route_get_keys(struct nb_cb_get_keys_args *args);
|
|
||||||
const void *
|
|
||||||
lib_vrf_zebra_ribs_rib_route_lookup_entry(struct nb_cb_lookup_entry_args *args);
|
|
||||||
struct yang_data *
|
|
||||||
lib_vrf_zebra_ribs_rib_route_prefix_get_elem(struct nb_cb_get_elem_args *args);
|
|
||||||
const void *lib_vrf_zebra_ribs_rib_route_route_entry_get_next(
|
const void *lib_vrf_zebra_ribs_rib_route_route_entry_get_next(
|
||||||
struct nb_cb_get_next_args *args);
|
struct nb_cb_get_next_args *args);
|
||||||
int lib_vrf_zebra_ribs_rib_route_route_entry_get_keys(
|
int lib_vrf_zebra_ribs_rib_route_route_entry_get_keys(
|
||||||
|
@ -2564,10 +2564,8 @@ DEFUN (default_vrf_vni_mapping,
|
|||||||
"VNI-ID\n"
|
"VNI-ID\n"
|
||||||
"Prefix routes only \n")
|
"Prefix routes only \n")
|
||||||
{
|
{
|
||||||
int ret = 0;
|
char xpath[XPATH_MAXLEN];
|
||||||
char err[ERR_STR_SZ];
|
|
||||||
struct zebra_vrf *zvrf = NULL;
|
struct zebra_vrf *zvrf = NULL;
|
||||||
vni_t vni = strtoul(argv[1]->arg, NULL, 10);
|
|
||||||
int filter = 0;
|
int filter = 0;
|
||||||
|
|
||||||
zvrf = vrf_info_lookup(VRF_DEFAULT);
|
zvrf = vrf_info_lookup(VRF_DEFAULT);
|
||||||
@ -2577,25 +2575,35 @@ DEFUN (default_vrf_vni_mapping,
|
|||||||
if (argc == 3)
|
if (argc == 3)
|
||||||
filter = 1;
|
filter = 1;
|
||||||
|
|
||||||
ret = zebra_vxlan_process_vrf_vni_cmd(zvrf, vni, err, ERR_STR_SZ,
|
snprintf(xpath, sizeof(xpath), FRR_VRF_KEY_XPATH "/frr-zebra:zebra",
|
||||||
filter, 1);
|
VRF_DEFAULT_NAME);
|
||||||
if (ret != 0) {
|
nb_cli_enqueue_change(vty, xpath, NB_OP_CREATE, NULL);
|
||||||
vty_out(vty, "%s\n", err);
|
|
||||||
return CMD_WARNING;
|
snprintf(xpath, sizeof(xpath),
|
||||||
|
FRR_VRF_KEY_XPATH "/frr-zebra:zebra/l3vni-id",
|
||||||
|
VRF_DEFAULT_NAME);
|
||||||
|
nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY, argv[1]->arg);
|
||||||
|
|
||||||
|
if (filter) {
|
||||||
|
snprintf(xpath, sizeof(xpath),
|
||||||
|
FRR_VRF_KEY_XPATH "/frr-zebra:zebra/prefix-only",
|
||||||
|
VRF_DEFAULT_NAME);
|
||||||
|
nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY, "true");
|
||||||
}
|
}
|
||||||
|
|
||||||
return CMD_SUCCESS;
|
return nb_cli_apply_changes(vty, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
DEFUN (no_default_vrf_vni_mapping,
|
DEFUN (no_default_vrf_vni_mapping,
|
||||||
no_default_vrf_vni_mapping_cmd,
|
no_default_vrf_vni_mapping_cmd,
|
||||||
"no vni " CMD_VNI_RANGE,
|
"no vni " CMD_VNI_RANGE "[prefix-routes-only]",
|
||||||
NO_STR
|
NO_STR
|
||||||
"VNI corresponding to DEFAULT VRF\n"
|
"VNI corresponding to DEFAULT VRF\n"
|
||||||
"VNI-ID")
|
"VNI-ID\n"
|
||||||
|
"Prefix routes only \n")
|
||||||
{
|
{
|
||||||
int ret = 0;
|
char xpath[XPATH_MAXLEN];
|
||||||
char err[ERR_STR_SZ];
|
int filter = 0;
|
||||||
vni_t vni = strtoul(argv[2]->arg, NULL, 10);
|
vni_t vni = strtoul(argv[2]->arg, NULL, 10);
|
||||||
struct zebra_vrf *zvrf = NULL;
|
struct zebra_vrf *zvrf = NULL;
|
||||||
|
|
||||||
@ -2603,13 +2611,32 @@ DEFUN (no_default_vrf_vni_mapping,
|
|||||||
if (!zvrf)
|
if (!zvrf)
|
||||||
return CMD_WARNING;
|
return CMD_WARNING;
|
||||||
|
|
||||||
ret = zebra_vxlan_process_vrf_vni_cmd(zvrf, vni, err, ERR_STR_SZ, 0, 0);
|
if (argc == 4)
|
||||||
if (ret != 0) {
|
filter = 1;
|
||||||
vty_out(vty, "%s\n", err);
|
|
||||||
|
if (zvrf->l3vni != vni) {
|
||||||
|
vty_out(vty, "VNI %d doesn't exist in VRF: %s \n", vni,
|
||||||
|
zvrf->vrf->name);
|
||||||
return CMD_WARNING;
|
return CMD_WARNING;
|
||||||
}
|
}
|
||||||
|
|
||||||
return CMD_SUCCESS;
|
snprintf(xpath, sizeof(xpath),
|
||||||
|
FRR_VRF_KEY_XPATH "/frr-zebra:zebra/l3vni-id",
|
||||||
|
VRF_DEFAULT_NAME);
|
||||||
|
nb_cli_enqueue_change(vty, xpath, NB_OP_DESTROY, argv[2]->arg);
|
||||||
|
|
||||||
|
if (filter) {
|
||||||
|
snprintf(xpath, sizeof(xpath),
|
||||||
|
FRR_VRF_KEY_XPATH "/frr-zebra:zebra/prefix-only",
|
||||||
|
VRF_DEFAULT_NAME);
|
||||||
|
nb_cli_enqueue_change(vty, xpath, NB_OP_DESTROY, "true");
|
||||||
|
}
|
||||||
|
|
||||||
|
snprintf(xpath, sizeof(xpath), FRR_VRF_KEY_XPATH "/frr-zebra:zebra",
|
||||||
|
VRF_DEFAULT_NAME);
|
||||||
|
nb_cli_enqueue_change(vty, xpath, NB_OP_DESTROY, NULL);
|
||||||
|
|
||||||
|
return nb_cli_apply_changes(vty, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
DEFUN (vrf_vni_mapping,
|
DEFUN (vrf_vni_mapping,
|
||||||
@ -2637,9 +2664,7 @@ DEFUN (vrf_vni_mapping,
|
|||||||
nb_cli_enqueue_change(vty, "./frr-zebra:zebra/prefix-only",
|
nb_cli_enqueue_change(vty, "./frr-zebra:zebra/prefix-only",
|
||||||
NB_OP_MODIFY, "true");
|
NB_OP_MODIFY, "true");
|
||||||
|
|
||||||
nb_cli_apply_changes(vty, NULL);
|
return nb_cli_apply_changes(vty, NULL);
|
||||||
|
|
||||||
return CMD_SUCCESS;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DEFUN (no_vrf_vni_mapping,
|
DEFUN (no_vrf_vni_mapping,
|
||||||
@ -2676,9 +2701,7 @@ DEFUN (no_vrf_vni_mapping,
|
|||||||
|
|
||||||
nb_cli_enqueue_change(vty, "./frr-zebra:zebra", NB_OP_DESTROY, NULL);
|
nb_cli_enqueue_change(vty, "./frr-zebra:zebra", NB_OP_DESTROY, NULL);
|
||||||
|
|
||||||
nb_cli_apply_changes(vty, NULL);
|
return nb_cli_apply_changes(vty, NULL);
|
||||||
|
|
||||||
return CMD_SUCCESS;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* show vrf */
|
/* show vrf */
|
||||||
|
Loading…
Reference in New Issue
Block a user