]> git.puffer.fish Git - mirror/frr.git/commitdiff
zebra: print rmac nexthop list
authorChirag Shah <chirag@nvidia.com>
Mon, 18 Oct 2021 18:51:35 +0000 (11:51 -0700)
committerChirag Shah <chirag@nvidia.com>
Fri, 11 Mar 2022 01:27:15 +0000 (17:27 -0800)
Ticket:#2798406
Reviewed By:
Testing Done:

Before change:
--------------

TORS1# show evpn rmac vni 4001 mac  44:38:39:ff:ff:01
MAC: 44:38:39:ff:ff:01
 Remote VTEP: 36.0.0.11
 Refcount: 1
  Prefixes:
    [1]:[00:00:00:00:00:00:00:00:00:00]:[::]/352
TORS1#
TORS1# show evpn rmac vni 4001 mac 44:38:39:ff:ff:01 json
{
  "routerMac":"44:38:39:ff:ff:01",
  "vtepIp":"36.0.0.11",
  "refCount":1,
  "localSequence":0,
  "remoteSequence":0,
  "prefixList":[
    "[1]:[00:00:00:00:00:00:00:00:00:00]:[::]\/352"
  ]
}

After change:
-------------

TORS1# show evpn rmac vni 4001 mac 44:38:39:ff:ff:01
MAC: 44:38:39:ff:ff:01
 Remote VTEP: 36.0.0.11
 Refcount: 0
  Prefixes:
TORS1#
TORS1# show evpn rmac vni 4001 mac 44:38:39:ff:ff:01 json
{
  "routerMac":"44:38:39:ff:ff:01",
  "vtepIp":"36.0.0.11",
  "nexthops":[
    "36.0.0.11"
  ]
}

Signed-off-by: Chirag Shah <chirag@nvidia.com>
zebra/zebra_vxlan.c

index 43045bd7ca43203661e51a5b3ab047363b09fe35..1d0c3850f6e6ff89b649f900ca7fabff6f168797 100644 (file)
@@ -398,8 +398,12 @@ static void zl3vni_print_nh(struct zebra_neigh *n, struct vty *vty,
 static void zl3vni_print_rmac(struct zebra_mac *zrmac, struct vty *vty,
                              json_object *json)
 {
+       char buf[INET6_ADDRSTRLEN];
        char buf1[ETHER_ADDR_STRLEN];
        char buf2[PREFIX_STRLEN];
+       struct listnode *node = NULL;
+       struct ipaddr *vtep = NULL;
+       json_object *json_nhs = NULL;
        json_object *json_hosts = NULL;
        struct host_rb_entry *hle;
 
@@ -414,11 +418,18 @@ static void zl3vni_print_rmac(struct zebra_mac *zrmac, struct vty *vty,
                        vty_out(vty, "    %pFX\n", &hle->p);
        } else {
                json_hosts = json_object_new_array();
+               json_nhs = json_object_new_array();
                json_object_string_add(
                        json, "routerMac",
                        prefix_mac2str(&zrmac->macaddr, buf1, sizeof(buf1)));
                json_object_string_addf(json, "vtepIp", "%pI4",
                                        &zrmac->fwd_info.r_vtep_ip);
+               for (ALL_LIST_ELEMENTS_RO(zrmac->nh_list, node, vtep)) {
+                       json_object_array_add(json_nhs,
+                                             json_object_new_string(ipaddr2str(
+                                                     vtep, buf, sizeof(buf))));
+               }
+               json_object_object_add(json, "nexthops", json_nhs);
                json_object_int_add(json, "refCount",
                                    rb_host_count(&zrmac->host_rb));
                RB_FOREACH (hle, host_rb_tree_entry, &zrmac->host_rb)