mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-03 22:37:49 +00:00
zebra: fix "show interface IFNAME" for netns
With netns VRF backend, we may have multiple interfaces with the same name. Currently, the function output is not deterministic in this case, it returns the first interface that it finds in the list. Be more explicit and tell the user that we need the VRF name. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
This commit is contained in:
parent
4ff97453d0
commit
31eab818f6
@ -2485,12 +2485,24 @@ DEFPY (show_interface_name_vrf_all,
|
||||
VRF_ALL_CMD_HELP_STR
|
||||
JSON_STR)
|
||||
{
|
||||
struct interface *ifp;
|
||||
struct interface *ifp = NULL;
|
||||
struct interface *ifptmp;
|
||||
struct vrf *vrf;
|
||||
json_object *json = NULL;
|
||||
int count = 0;
|
||||
|
||||
interface_update_stats();
|
||||
|
||||
ifp = if_lookup_by_name_all_vrf(ifname);
|
||||
RB_FOREACH (vrf, vrf_name_head, &vrfs_by_name) {
|
||||
ifptmp = if_lookup_by_name_vrf(ifname, vrf);
|
||||
if (ifptmp) {
|
||||
ifp = ifptmp;
|
||||
count++;
|
||||
if (!vrf_is_backend_netns())
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (ifp == NULL) {
|
||||
if (uj)
|
||||
vty_out(vty, "{}\n");
|
||||
@ -2498,6 +2510,17 @@ DEFPY (show_interface_name_vrf_all,
|
||||
vty_out(vty, "%% Can't find interface %s\n", ifname);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
if (count > 1) {
|
||||
if (uj) {
|
||||
vty_out(vty, "{}\n");
|
||||
} else {
|
||||
vty_out(vty,
|
||||
"%% There are multiple interfaces with name %s\n",
|
||||
ifname);
|
||||
vty_out(vty, "%% You must specify the VRF name\n");
|
||||
}
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
if (uj)
|
||||
json = json_object_new_object();
|
||||
|
Loading…
Reference in New Issue
Block a user