zebra: Adding FRR support for show vrf vrf-id vni

cli & json support extended for show vrf vrf-id vni

commands:

 - existing: show vrf vni
 - show vrf <vrf-name> vni
 - show vrf all vni
 - show vrf <vrf-name> vni json
 - show vrf all vni json

Before:
```
tor-1# show vrf vni
VRF                                   VNI        VxLAN IF
L3-SVI               State Rmac
default                               100        None
None                 Down  None
sym_1                                 8888       vxlan99
vlan490_l3           Up    44:38:39:ff:ff:25
sym_2                                 8889       vxlan99
vlan491_l3           Up    44:38:39:ff:ff:25
sym_3                                 8890       vxlan99
vlan492_l3           Up    44:38:39:ff:ff:25
sym_4                                 8891       vxlan99
vlan493_l3           Up    44:38:39:ff:ff:25
sym_5                                 8892       vxlan99
vlan494_l3           Up    44:38:39:ff:ff:25
tor-1#
```

After:
```
tor-1# show vrf default vni json
{
  "vrfs":[
    {
      "vrf":"default",
      "vni":100,
      "vxlanIntf":"None",
      "sviIntf":"None",
      "state":"Down",
      "routerMac":"None"
    }
  ]
}

tor-1# show vrf default vni
VRF                                   VNI        VxLAN IF
L3-SVI               State Rmac
default                               100        None
None                 Down  None
tor-1#

tor-1# show vrf all vni
VRF                                   VNI        VxLAN IF
L3-SVI               State Rmac
default                               100        None
None                 Down  None
sym_1                                 8888       vxlan99
vlan490_l3           Up    44:38:39:ff:ff:25
sym_2                                 8889       vxlan99
vlan491_l3           Up    44:38:39:ff:ff:25
sym_3                                 8890       vxlan99
vlan492_l3           Up    44:38:39:ff:ff:25
sym_4                                 8891       vxlan99
vlan493_l3           Up    44:38:39:ff:ff:25
sym_5                                 8892       vxlan99
vlan494_l3           Up    44:38:39:ff:ff:25
tor-1#
tor-1#

tor-1#
tor-1#
tor-1#
tor-1# show vrf all vni json
{
  "vrfs":[
    {
      "vrf":"default",
      "vni":100,
      "vxlanIntf":"None",
      "sviIntf":"None",
      "state":"Down",
      "routerMac":"None"
    },
    {
      "vrf":"sym_1",
      "vni":8888,
      "vxlanIntf":"vxlan99",
      "sviIntf":"vlan490_l3",
      "state":"Up",
      "routerMac":"44:38:39:ff:ff:25"
    },
    {
      "vrf":"sym_2",
      "vni":8889,
      "vxlanIntf":"vxlan99",
      "sviIntf":"vlan491_l3",
      "state":"Up",
      "routerMac":"44:38:39:ff:ff:25"
    },
    {
      "vrf":"sym_3",
      "vni":8890,
      "vxlanIntf":"vxlan99",
      "sviIntf":"vlan492_l3",
      "state":"Up",
      "routerMac":"44:38:39:ff:ff:25"
    },
    {
      "vrf":"sym_4",
      "vni":8891,
      "vxlanIntf":"vxlan99",
      "sviIntf":"vlan493_l3",
      "state":"Up",
      "routerMac":"44:38:39:ff:ff:25"
    },
    {
      "vrf":"sym_5",
      "vni":8892,
      "vxlanIntf":"vxlan99",
      "sviIntf":"vlan494_l3",
      "state":"Up",
      "routerMac":"44:38:39:ff:ff:25"
    }
  ]
}
tor-1#
```

Ticket:#3260835
Issue:3260835

Testing: UT done

Signed-off-by: Sindhu Parvathi Gopinathan <sgopinathan@nvidia.com>
This commit is contained in:
Sindhu Parvathi Gopinathan 2022-12-03 11:09:49 -08:00 committed by Chirag Shah
parent 329dc20704
commit 3cff8acb33

View File

@ -3169,11 +3169,11 @@ DEFUN (no_vrf_vni_mapping,
} }
/* show vrf */ /* show vrf */
DEFUN (show_vrf_vni, DEFPY (show_vrf_vni,
show_vrf_vni_cmd, show_vrf_vni_cmd,
"show vrf vni [json]", "show vrf [<NAME$vrf_name|all$vrf_all>] vni [json]",
SHOW_STR SHOW_STR
"VRF\n" VRF_FULL_CMD_HELP_STR
"VNI\n" "VNI\n"
JSON_STR) JSON_STR)
{ {
@ -3182,21 +3182,70 @@ DEFUN (show_vrf_vni,
json_object *json = NULL; json_object *json = NULL;
json_object *json_vrfs = NULL; json_object *json_vrfs = NULL;
bool uj = use_json(argc, argv); bool uj = use_json(argc, argv);
bool use_vrf = false;
if (uj) { if (uj)
json = json_object_new_object(); json = json_object_new_object();
json_vrfs = json_object_new_array();
}
if (!uj)
vty_out(vty, "%-37s %-10s %-20s %-20s %-5s %-18s\n", "VRF",
"VNI", "VxLAN IF", "L3-SVI", "State", "Rmac");
/* show vrf vni used to display across all vrfs
* This is enhanced to support only for specific
* vrf based output.
*/
if (vrf_all || !vrf_name) {
RB_FOREACH (vrf, vrf_name_head, &vrfs_by_name) { RB_FOREACH (vrf, vrf_name_head, &vrfs_by_name) {
zvrf = vrf->info; zvrf = vrf->info;
if (!zvrf) if (!zvrf)
continue; continue;
use_vrf = true;
break;
}
if (use_vrf) {
if (!uj)
vty_out(vty,
"%-37s %-10s %-20s %-20s %-5s %-18s\n",
"VRF", "VNI", "VxLAN IF", "L3-SVI",
"State", "Rmac");
else
json_vrfs = json_object_new_array();
} else {
if (uj)
vty_json(vty, json);
else
vty_out(vty, "%% VRF does not exist\n");
return CMD_WARNING;
}
}
if (use_vrf) {
RB_FOREACH (vrf, vrf_name_head, &vrfs_by_name) {
zvrf = vrf->info;
if (!zvrf)
continue;
zebra_vxlan_print_vrf_vni(vty, zvrf, json_vrfs);
}
} else if (vrf_name) {
zvrf = zebra_vrf_lookup_by_name(vrf_name);
if (!zvrf) {
if (uj)
vty_json(vty, json);
else
vty_out(vty,
"%% VRF '%s' specified does not exist\n",
vrf_name);
return CMD_WARNING;
}
if (!uj)
vty_out(vty, "%-37s %-10s %-20s %-20s %-5s %-18s\n",
"VRF", "VNI", "VxLAN IF", "L3-SVI", "State",
"Rmac");
else
json_vrfs = json_object_new_array();
zebra_vxlan_print_vrf_vni(vty, zvrf, json_vrfs); zebra_vxlan_print_vrf_vni(vty, zvrf, json_vrfs);
} }