summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bgpd/bgp_evpn_vty.c10
-rw-r--r--bgpd/bgp_route.c14
-rw-r--r--bgpd/bgp_vty.c6
-rw-r--r--lib/plist.c8
-rw-r--r--lib/srv6.c8
-rw-r--r--ospfd/ospf_vty.c13
-rw-r--r--pbrd/pbr_vty.c9
-rw-r--r--pimd/pim_rp.c7
-rw-r--r--tools/coccinelle/json_object_string_addf_inet_ntop.cocci (renamed from tools/coccinelle/json_object_string_addf.cocci)0
-rw-r--r--tools/coccinelle/json_object_string_addf_prefix2str.cocci16
-rw-r--r--zebra/interface.c10
11 files changed, 47 insertions, 54 deletions
diff --git a/bgpd/bgp_evpn_vty.c b/bgpd/bgp_evpn_vty.c
index 89ed9551ce..455315e40d 100644
--- a/bgpd/bgp_evpn_vty.c
+++ b/bgpd/bgp_evpn_vty.c
@@ -1345,10 +1345,12 @@ static int bgp_show_ethernet_vpn(struct vty *vty, struct prefix_rd *prd,
json_prefix_info = json_object_new_object();
- json_object_string_add(
- json_prefix_info, "prefix",
- prefix2str((struct prefix_evpn *)p, buf,
- BUFSIZ));
+ prefix2str((struct prefix_evpn *)p, buf,
+ BUFSIZ);
+
+ json_object_string_addf(
+ json_prefix_info, "prefix", "%pFX",
+ (struct prefix_evpn *)p);
json_object_int_add(json_prefix_info,
"prefixLen", p->prefixlen);
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
index b79fe778ae..f8b09e56bf 100644
--- a/bgpd/bgp_route.c
+++ b/bgpd/bgp_route.c
@@ -8384,7 +8384,6 @@ static void route_vty_out_route(struct bgp_dest *dest, const struct prefix *p,
{
int len = 0;
char buf[BUFSIZ];
- char buf2[BUFSIZ];
if (p->family == AF_INET) {
if (!json) {
@@ -8395,8 +8394,7 @@ static void route_vty_out_route(struct bgp_dest *dest, const struct prefix *p,
&p->u.prefix, buf,
BUFSIZ));
json_object_int_add(json, "prefixLen", p->prefixlen);
- prefix2str(p, buf2, PREFIX_STRLEN);
- json_object_string_add(json, "network", buf2);
+ json_object_string_addf(json, "network", "%pFX", p);
json_object_int_add(json, "version", dest->version);
}
} else if (p->family == AF_ETHERNET) {
@@ -8420,8 +8418,7 @@ static void route_vty_out_route(struct bgp_dest *dest, const struct prefix *p,
&p->u.prefix, buf,
BUFSIZ));
json_object_int_add(json, "prefixLen", p->prefixlen);
- prefix2str(p, buf2, PREFIX_STRLEN);
- json_object_string_add(json, "network", buf2);
+ json_object_string_addf(json, "network", "%pFX", p);
json_object_int_add(json, "version", dest->version);
}
}
@@ -9100,8 +9097,7 @@ void route_vty_out_tmp(struct vty *vty, struct bgp_dest *dest,
BUFSIZ));
json_object_int_add(json_net, "prefixLen",
p->prefixlen);
- prefix2str(p, buff, PREFIX_STRLEN);
- json_object_string_add(json_net, "network", buff);
+ json_object_string_addf(json_net, "network", "%pFX", p);
}
} else
route_vty_out_route(dest, p, vty, NULL, wide);
@@ -11247,7 +11243,6 @@ void route_vty_out_detail_header(struct vty *vty, struct bgp *bgp,
struct peer *peer;
struct listnode *node, *nnode;
char buf1[RD_ADDRSTRLEN];
- char prefix_str[BUFSIZ];
int count = 0;
int best = 0;
int suppress = 0;
@@ -11301,8 +11296,7 @@ void route_vty_out_detail_header(struct vty *vty, struct bgp *bgp,
dest->version);
} else {
- json_object_string_add(json, "prefix",
- prefix2str(p, prefix_str, sizeof(prefix_str)));
+ json_object_string_addf(json, "prefix", "%pFX", p);
json_object_int_add(json, "version", dest->version);
}
diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c
index 88d84a3c50..29076537dc 100644
--- a/bgpd/bgp_vty.c
+++ b/bgpd/bgp_vty.c
@@ -12363,10 +12363,10 @@ static void bgp_show_peer(struct vty *vty, struct peer *p, bool use_json,
p->group, &prefix);
if (range) {
- prefix2str(range, buf1, sizeof(buf1));
- json_object_string_add(
+ json_object_string_addf(
json_neigh,
- "peerSubnetRangeGroup", buf1);
+ "peerSubnetRangeGroup", "%pFX",
+ range);
}
}
} else {
diff --git a/lib/plist.c b/lib/plist.c
index 0b3de88d9f..d2ddb1d61c 100644
--- a/lib/plist.c
+++ b/lib/plist.c
@@ -1010,7 +1010,6 @@ static void vty_show_prefix_entry(struct vty *vty, json_object *json, afi_t afi,
if (json) {
json_object *json_entry;
- char buf[BUFSIZ];
json_entry = json_object_new_object();
json_object_array_add(json_entries, json_entry);
@@ -1021,10 +1020,9 @@ static void vty_show_prefix_entry(struct vty *vty, json_object *json, afi_t afi,
json_object_string_add(
json_entry, "type",
prefix_list_type_str(pentry));
- json_object_string_add(
- json_entry, "prefix",
- prefix2str(&pentry->prefix, buf,
- sizeof(buf)));
+ json_object_string_addf(json_entry, "prefix",
+ "%pFX",
+ &pentry->prefix);
if (pentry->ge)
json_object_int_add(
diff --git a/lib/srv6.c b/lib/srv6.c
index ccb94b2f76..aacd30a7af 100644
--- a/lib/srv6.c
+++ b/lib/srv6.c
@@ -161,12 +161,10 @@ void srv6_locator_chunk_free(struct srv6_locator_chunk *chunk)
json_object *srv6_locator_chunk_json(const struct srv6_locator_chunk *chunk)
{
- char str[256];
json_object *jo_root = NULL;
jo_root = json_object_new_object();
- prefix2str(&chunk->prefix, str, sizeof(str));
- json_object_string_add(jo_root, "prefix", str);
+ json_object_string_addf(jo_root, "prefix", "%pFX", &chunk->prefix);
json_object_string_add(jo_root, "proto",
zebra_route_string(chunk->proto));
@@ -175,7 +173,6 @@ json_object *srv6_locator_chunk_json(const struct srv6_locator_chunk *chunk)
json_object *srv6_locator_json(const struct srv6_locator *loc)
{
- char str[256];
struct listnode *node;
struct srv6_locator_chunk *chunk;
json_object *jo_root = NULL;
@@ -188,8 +185,7 @@ json_object *srv6_locator_json(const struct srv6_locator *loc)
json_object_string_add(jo_root, "name", loc->name);
/* set prefix */
- prefix2str(&loc->prefix, str, sizeof(str));
- json_object_string_add(jo_root, "prefix", str);
+ json_object_string_addf(jo_root, "prefix", "%pFX", &loc->prefix);
/* set function_bits_length */
json_object_int_add(jo_root, "functionBitsLength",
diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c
index 84469160d3..24ea764385 100644
--- a/ospfd/ospf_vty.c
+++ b/ospfd/ospf_vty.c
@@ -5966,7 +5966,6 @@ static int show_lsa_summary(struct vty *vty, struct ospf_lsa *lsa, int self,
struct summary_lsa *sl;
struct as_external_lsa *asel;
struct prefix_ipv4 p;
- char buf[PREFIX2STR_BUFFER];
if (lsa != NULL)
/* If self option is set, check LSA self flag. */
@@ -6025,10 +6024,9 @@ static int show_lsa_summary(struct vty *vty, struct ospf_lsa *lsa, int self,
if (!json_lsa)
vty_out(vty, " %pFX", &p);
else {
- prefix2str(&p, buf, sizeof(buf));
- json_object_string_add(json_lsa,
- "summaryAddress",
- buf);
+ json_object_string_addf(
+ json_lsa, "summaryAddress",
+ "%pFX", &p);
}
break;
case OSPF_AS_EXTERNAL_LSA:
@@ -6050,15 +6048,14 @@ static int show_lsa_summary(struct vty *vty, struct ospf_lsa *lsa, int self,
(unsigned long)ntohl(
asel->e[0].route_tag));
else {
- prefix2str(&p, buf, sizeof(buf));
json_object_string_add(
json_lsa, "metricType",
IS_EXTERNAL_METRIC(
asel->e[0].tos)
? "E2"
: "E1");
- json_object_string_add(json_lsa,
- "route", buf);
+ json_object_string_addf(
+ json_lsa, "route", "%pFX", &p);
json_object_int_add(
json_lsa, "tag",
(unsigned long)ntohl(
diff --git a/pbrd/pbr_vty.c b/pbrd/pbr_vty.c
index dddca1d720..47acfd82a2 100644
--- a/pbrd/pbr_vty.c
+++ b/pbrd/pbr_vty.c
@@ -917,7 +917,6 @@ static void vty_json_pbrms(json_object *j, struct vty *vty,
json_object *jpbrm, *nexthop_group;
char *nhg_name = pbrms->nhgrp_name ? pbrms->nhgrp_name
: pbrms->internal_nhg_name;
- char buf[PREFIX_STRLEN];
char rbuf[64];
jpbrm = json_object_new_object();
@@ -953,13 +952,9 @@ static void vty_json_pbrms(json_object *j, struct vty *vty,
json_object_string_add(jpbrm, "vrfName", pbrms->vrf_name);
if (pbrms->src)
- json_object_string_add(
- jpbrm, "matchSrc",
- prefix2str(pbrms->src, buf, sizeof(buf)));
+ json_object_string_addf(jpbrm, "matchSrc", "%pFX", pbrms->src);
if (pbrms->dst)
- json_object_string_add(
- jpbrm, "matchDst",
- prefix2str(pbrms->dst, buf, sizeof(buf)));
+ json_object_string_addf(jpbrm, "matchDst", "%pFX", pbrms->dst);
if (pbrms->mark)
json_object_int_add(jpbrm, "matchMark", pbrms->mark);
if (pbrms->dsfield & PBR_DSFIELD_DSCP)
diff --git a/pimd/pim_rp.c b/pimd/pim_rp.c
index 4865b0ed46..702e4d1d76 100644
--- a/pimd/pim_rp.c
+++ b/pimd/pim_rp.c
@@ -1273,10 +1273,9 @@ void pim_rp_show_information(struct pim_instance *pim, struct vty *vty, bool uj)
"prefixList",
rp_info->plist);
else
- json_object_string_add(
- json_row, "group",
- prefix2str(&rp_info->group, buf,
- 48));
+ json_object_string_addf(
+ json_row, "group", "%pFX",
+ &rp_info->group);
json_object_string_add(json_row, "source",
source);
diff --git a/tools/coccinelle/json_object_string_addf.cocci b/tools/coccinelle/json_object_string_addf_inet_ntop.cocci
index d9f92e564c..d9f92e564c 100644
--- a/tools/coccinelle/json_object_string_addf.cocci
+++ b/tools/coccinelle/json_object_string_addf_inet_ntop.cocci
diff --git a/tools/coccinelle/json_object_string_addf_prefix2str.cocci b/tools/coccinelle/json_object_string_addf_prefix2str.cocci
new file mode 100644
index 0000000000..ae012b91be
--- /dev/null
+++ b/tools/coccinelle/json_object_string_addf_prefix2str.cocci
@@ -0,0 +1,16 @@
+@@
+identifier json;
+expression family, value;
+expression prefix;
+constant key;
+@@
+
+(
+-prefix2str(prefix, value, ...);
+...
+-json_object_string_add(json, key, value);
++json_object_string_addf(json, key, "%pFX", prefix);
+|
+-json_object_string_add(json, key, prefix2str(prefix, value, ...));
++json_object_string_addf(json, key, "%pFX", prefix);
+)
diff --git a/zebra/interface.c b/zebra/interface.c
index d300397b4e..6ad6e4e3f6 100644
--- a/zebra/interface.c
+++ b/zebra/interface.c
@@ -1310,7 +1310,6 @@ static void connected_dump_vty(struct vty *vty, json_object *json,
{
struct prefix *p;
json_object *json_addr = NULL;
- char buf[PREFIX2STR_BUFFER];
/* Print interface address. */
p = connected->address;
@@ -1318,8 +1317,7 @@ static void connected_dump_vty(struct vty *vty, json_object *json,
if (json) {
json_addr = json_object_new_object();
json_object_array_add(json, json_addr);
- json_object_string_add(json_addr, "address",
- prefix2str(p, buf, sizeof(buf)));
+ json_object_string_addf(json_addr, "address", "%pFX", p);
} else {
vty_out(vty, " %s %pFX", prefix_family_str(p), p);
}
@@ -1327,10 +1325,8 @@ static void connected_dump_vty(struct vty *vty, json_object *json,
/* If there is destination address, print it. */
if (CONNECTED_PEER(connected) && connected->destination) {
if (json) {
- json_object_string_add(
- json_addr, "peer",
- prefix2str(connected->destination, buf,
- sizeof(buf)));
+ json_object_string_addf(json_addr, "peer", "%pFX",
+ connected->destination);
} else {
vty_out(vty, " peer %pFX", connected->destination);
}