aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Poirier <bpoirier@nvidia.com>2023-12-11 09:07:29 -0500
committerStephen Hemminger <stephen@networkplumber.org>2023-12-22 09:57:54 -0800
commit1d73bfc8ab290d60a23ea248ca85dacfd7cd0e2b (patch)
treea2d34d51d0b84343e5ae5f45ac772a657b7d57d1
parentdd4e1749a977503698e7f76e157815b5d852caf1 (diff)
downloadiproute2-1d73bfc8ab290d60a23ea248ca85dacfd7cd0e2b.tar.gz
bridge: Deduplicate print_range()
The two implementations are now identical so keep only one instance and move it to json_print.c where there are already a few other specialized printing functions. The string that's formatted in the "end" buffer is only needed when outputting a range so move the snprintf() call within the condition. The second argument's purpose is better conveyed by calling it "end" rather than "id" so rename it. Reviewed-by: Petr Machata <petrm@nvidia.com> Tested-by: Petr Machata <petrm@nvidia.com> Signed-off-by: Benjamin Poirier <bpoirier@nvidia.com> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
-rw-r--r--bridge/vlan.c14
-rw-r--r--bridge/vni.c14
-rw-r--r--include/json_print.h2
-rw-r--r--lib/json_print.c15
4 files changed, 17 insertions, 28 deletions
diff --git a/bridge/vlan.c b/bridge/vlan.c
index 7a175b047..05e6a6206 100644
--- a/bridge/vlan.c
+++ b/bridge/vlan.c
@@ -590,20 +590,6 @@ static void close_vlan_port(void)
close_json_object();
}
-static unsigned int print_range(const char *name, __u32 start, __u32 id)
-{
- char end[64];
- int width;
-
- snprintf(end, sizeof(end), "%sEnd", name);
-
- width = print_uint(PRINT_ANY, name, "%u", start);
- if (start != id)
- width += print_uint(PRINT_ANY, end, "-%u", id);
-
- return width;
-}
-
static void print_vlan_tunnel_info(struct rtattr *tb, int ifindex)
{
struct rtattr *i, *list = tb;
diff --git a/bridge/vni.c b/bridge/vni.c
index 2c6d506a7..ffc3e1887 100644
--- a/bridge/vni.c
+++ b/bridge/vni.c
@@ -163,20 +163,6 @@ static void close_vni_port(void)
close_json_object();
}
-static unsigned int print_range(const char *name, __u32 start, __u32 id)
-{
- char end[64];
- int width;
-
- snprintf(end, sizeof(end), "%sEnd", name);
-
- width = print_uint(PRINT_ANY, name, "%u", start);
- if (start != id)
- width += print_uint(PRINT_ANY, end, "-%u", id);
-
- return width;
-}
-
static void print_vnifilter_entry_stats(struct rtattr *stats_attr)
{
struct rtattr *stb[VNIFILTER_ENTRY_STATS_MAX+1];
diff --git a/include/json_print.h b/include/json_print.h
index 0b1d84f78..daebcf5d2 100644
--- a/include/json_print.h
+++ b/include/json_print.h
@@ -97,6 +97,8 @@ static inline int print_rate(bool use_iec, enum output_type t,
return print_color_rate(use_iec, t, COLOR_NONE, key, fmt, rate);
}
+unsigned int print_range(const char *name, __u32 start, __u32 end);
+
int print_color_bool_opt(enum output_type type, enum color_attr color,
const char *key, bool value, bool show);
diff --git a/lib/json_print.c b/lib/json_print.c
index 602de027c..7b3b6c3fa 100644
--- a/lib/json_print.c
+++ b/lib/json_print.c
@@ -374,3 +374,18 @@ int print_color_rate(bool use_iec, enum output_type type, enum color_attr color,
free(buf);
return rc;
}
+
+unsigned int print_range(const char *name, __u32 start, __u32 end)
+{
+ int width;
+
+ width = print_uint(PRINT_ANY, name, "%u", start);
+ if (start != end) {
+ char buf[64];
+
+ snprintf(buf, sizeof(buf), "%sEnd", name);
+ width += print_uint(PRINT_ANY, buf, "-%u", end);
+ }
+
+ return width;
+}