summaryrefslogtreecommitdiff
path: root/zebra/interface.c
diff options
context:
space:
mode:
authorSharath Ramamurthy <sramamurthy@nvidia.com>2021-08-04 12:16:25 +0530
committerStephen Worley <sworley@nvidia.com>2023-02-13 18:12:04 -0500
commit9c21cf68bf84aa1e9d505377bbfae51a20f67174 (patch)
tree184afa0c40b28f1519d6e49d9cb6ea3ee4936371 /zebra/interface.c
parent9464e5b865a2995e436ce2986f5722921cb83394 (diff)
zebra: Add ifdump vty json extension for vxlan/vni
This patch adds dump for vxlan/vni for vxlan devices in if_dump_vty_json Signed-off-by: Sharath Ramamurthy <sramamurthy@nvidia.com>
Diffstat (limited to 'zebra/interface.c')
-rw-r--r--zebra/interface.c125
1 files changed, 59 insertions, 66 deletions
diff --git a/zebra/interface.c b/zebra/interface.c
index dfac8ed2ec..5e63a7bb5a 100644
--- a/zebra/interface.c
+++ b/zebra/interface.c
@@ -1904,44 +1904,20 @@ static void zebra_vxlan_if_vni_dump_vty(struct vty *vty,
inet_ntop(AF_INET, &vni->mcast_grp, str, sizeof(str)));
}
-static void zebra_vxlan_if_vni_dump_vty_json(struct zebra_vxlan_vni *vni,
- json_object *json_if)
-{
- json_object_int_add(json_if, "vxlanId", vni->vni);
- if (vni->access_vlan)
- json_object_int_add(json_if, "accessVlanId", vni->access_vlan);
-
- if (vni->mcast_grp.s_addr != INADDR_ANY)
- json_object_string_addf(json_if, "mcastGroup", "%pI4",
- &vni->mcast_grp);
-}
-
-struct vxlan_if_dump_ctx {
- struct vty *vty;
- json_object *json_if;
-};
-
static void zebra_vxlan_if_vni_hash_dump_vty(struct hash_bucket *bucket,
void *ctxt)
{
struct vty *vty;
- struct json_object *json_if;
struct zebra_vxlan_vni *vni;
vni = (struct zebra_vxlan_vni *)bucket->data;
- vty = ((struct vxlan_if_dump_ctx *)ctxt)->vty;
- json_if = ((struct vxlan_if_dump_ctx *)ctxt)->json_if;
+ vty = (struct vty *) ctxt;
- if (json_if)
- zebra_vxlan_if_vni_dump_vty_json(vni, json_if);
- else
- zebra_vxlan_if_vni_dump_vty(vty, vni);
+ zebra_vxlan_if_vni_dump_vty(vty, vni);
}
static void zebra_vxlan_if_dump_vty(struct vty *vty, struct zebra_if *zebra_if)
{
- struct vxlan_if_dump_ctx dump_ctx;
- char str[INET6_ADDRSTRLEN];
struct zebra_l2info_vxlan *vxlan_info;
struct zebra_vxlan_vni_info *vni_info;
@@ -1949,9 +1925,7 @@ static void zebra_vxlan_if_dump_vty(struct vty *vty, struct zebra_if *zebra_if)
vni_info = &vxlan_info->vni_info;
if (vxlan_info->vtep_ip.s_addr != INADDR_ANY)
- vty_out(vty, " VTEP IP: %s",
- inet_ntop(AF_INET, &vxlan_info->vtep_ip, str,
- sizeof(str)));
+ vty_out(vty, " VTEP IP: %pI4", &vxlan_info->vtep_ip);
if (vxlan_info->ifindex_link && (vxlan_info->link_nsid != NS_UNKNOWN)) {
struct interface *ifp;
@@ -1966,48 +1940,13 @@ static void zebra_vxlan_if_dump_vty(struct vty *vty, struct zebra_if *zebra_if)
if (IS_ZEBRA_VXLAN_IF_VNI(zebra_if)) {
zebra_vxlan_if_vni_dump_vty(vty, &vni_info->vni);
} else {
- dump_ctx.json_if = NULL;
- dump_ctx.vty = vty;
hash_iterate(vni_info->vni_table,
- zebra_vxlan_if_vni_hash_dump_vty, &dump_ctx);
+ zebra_vxlan_if_vni_hash_dump_vty, vty);
}
vty_out(vty, "\n");
}
-static void zebra_vxlan_if_dump_vty_json(struct zebra_if *zebra_if,
- json_object *json_if)
-{
- struct vxlan_if_dump_ctx dump_ctx;
- struct zebra_l2info_vxlan *vxlan_info;
- struct zebra_vxlan_vni_info *vni_info;
-
- vxlan_info = &zebra_if->l2info.vxl;
- vni_info = &vxlan_info->vni_info;
-
- if (vxlan_info->vtep_ip.s_addr != INADDR_ANY)
- json_object_string_addf(json_if, "vtepIp", "%pI4",
- &vxlan_info->vtep_ip);
-
- if (vxlan_info->ifindex_link && (vxlan_info->link_nsid != NS_UNKNOWN)) {
- struct interface *ifp;
-
- ifp = if_lookup_by_index_per_ns(
- zebra_ns_lookup(vxlan_info->link_nsid),
- vxlan_info->ifindex_link);
- json_object_string_add(json_if, "linkInterface",
- ifp == NULL ? "Unknown" : ifp->name);
- }
-
- if (IS_ZEBRA_VXLAN_IF_VNI(zebra_if)) {
- zebra_vxlan_if_vni_dump_vty_json(&vni_info->vni, json_if);
- } else {
- dump_ctx.json_if = json_if;
- hash_iterate(vni_info->vni_table,
- zebra_vxlan_if_vni_hash_dump_vty, &dump_ctx);
- }
-}
-
/* Interface's information print out to vty interface. */
static void if_dump_vty(struct vty *vty, struct interface *ifp)
{
@@ -2317,6 +2256,59 @@ static void if_dump_vty(struct vty *vty, struct interface *ifp)
#endif /* HAVE_NET_RT_IFLIST */
}
+static void zebra_vxlan_if_vni_dump_vty_json(json_object *json_if,
+ struct zebra_vxlan_vni *vni)
+{
+ json_object_int_add(json_if, "vxlanId", vni->vni);
+ if (vni->access_vlan)
+ json_object_int_add(json_if, "accessVlanId", vni->access_vlan);
+ if (vni->mcast_grp.s_addr != INADDR_ANY)
+ json_object_string_addf(json_if, "mcastGroup", "%pI4",
+ &vni->mcast_grp);
+}
+
+static void zebra_vxlan_if_vni_hash_dump_vty_json(struct hash_bucket *bucket,
+ void *ctxt)
+{
+ json_object *json_if;
+ struct zebra_vxlan_vni *vni;
+
+ vni = (struct zebra_vxlan_vni *)bucket->data;
+ json_if = (json_object *)ctxt;
+
+ zebra_vxlan_if_vni_dump_vty_json(json_if, vni);
+}
+
+static void zebra_vxlan_if_dump_vty_json(json_object *json_if,
+ struct zebra_if *zebra_if)
+{
+ struct zebra_l2info_vxlan *vxlan_info;
+ struct zebra_vxlan_vni_info *vni_info;
+
+ vxlan_info = &zebra_if->l2info.vxl;
+ vni_info = &vxlan_info->vni_info;
+
+ if (vxlan_info->vtep_ip.s_addr != INADDR_ANY)
+ json_object_string_addf(json_if, "vtepIp", "%pI4",
+ &vxlan_info->vtep_ip);
+
+ if (vxlan_info->ifindex_link && (vxlan_info->link_nsid != NS_UNKNOWN)) {
+ struct interface *ifp;
+
+ ifp = if_lookup_by_index_per_ns(
+ zebra_ns_lookup(vxlan_info->link_nsid),
+ vxlan_info->ifindex_link);
+ json_object_string_add(json_if, "linkInterface",
+ ifp == NULL ? "Unknown" : ifp->name);
+ }
+ if (IS_ZEBRA_VXLAN_IF_VNI(zebra_if)) {
+ zebra_vxlan_if_vni_dump_vty_json(json_if, &vni_info->vni);
+ } else {
+ hash_iterate(vni_info->vni_table,
+ zebra_vxlan_if_vni_hash_dump_vty_json, json_if);
+ }
+}
+
static void if_dump_vty_json(struct vty *vty, struct interface *ifp,
json_object *json)
{
@@ -2451,7 +2443,8 @@ static void if_dump_vty_json(struct vty *vty, struct interface *ifp,
vlan_info = &zebra_if->l2info.vl;
json_object_int_add(json_if, "vlanId", vlan_info->vid);
} else if (IS_ZEBRA_IF_VXLAN(ifp)) {
- zebra_vxlan_if_dump_vty_json(zebra_if, json_if);
+ zebra_vxlan_if_dump_vty_json(json_if, zebra_if);
+
} else if (IS_ZEBRA_IF_GRE(ifp)) {
struct zebra_l2info_gre *gre_info;