]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: do not append table number in TableString field in json output
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 14 Jul 2023 07:02:17 +0000 (16:02 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 14 Jul 2023 17:56:20 +0000 (02:56 +0900)
The json output already contains table number, hence, it is not
necessary to include number in the string.

src/network/networkd-json.c
src/network/networkd-route-util.c
src/network/networkd-route-util.h
src/network/networkd-route.c
src/network/networkd-routing-policy-rule.c
src/network/test-network.c

index c32642205ef1260b18af9da44741dde7184018df..62b4115ff35119ee90ce17dfab4765fe3adb0b6b 100644 (file)
@@ -274,7 +274,7 @@ static int route_build_json(Route *route, JsonVariant **ret) {
         if (r < 0)
                 return r;
 
-        r = manager_get_route_table_to_string(manager, route->table, &table);
+        r = manager_get_route_table_to_string(manager, route->table, /* append_num = */ false, &table);
         if (r < 0)
                 return r;
 
@@ -357,7 +357,7 @@ static int routing_policy_rule_build_json(RoutingPolicyRule *rule, JsonVariant *
         assert(rule->manager);
         assert(ret);
 
-        r = manager_get_route_table_to_string(rule->manager, rule->table, &table);
+        r = manager_get_route_table_to_string(rule->manager, rule->table, /* append_num = */ false, &table);
         if (r < 0 && r != -EINVAL)
                 return r;
 
index e497f059965786c46537ea4bf48138f244b7decc..aa7a4f93b36c4867a8dd62f7e593c8e712d3ff82 100644 (file)
@@ -411,10 +411,9 @@ int manager_get_route_table_from_string(const Manager *m, const char *s, uint32_
         return 0;
 }
 
-int manager_get_route_table_to_string(const Manager *m, uint32_t table, char **ret) {
+int manager_get_route_table_to_string(const Manager *m, uint32_t table, bool append_num, char **ret) {
         _cleanup_free_ char *str = NULL;
         const char *s;
-        int r;
 
         assert(m);
         assert(ret);
@@ -426,13 +425,16 @@ int manager_get_route_table_to_string(const Manager *m, uint32_t table, char **r
         if (!s)
                 s = hashmap_get(m->route_table_names_by_number, UINT32_TO_PTR(table));
 
-        if (s)
-                /* Currently, this is only used in debugging logs. To not confuse any bug
-                 * reports, let's include the table number. */
-                r = asprintf(&str, "%s(%" PRIu32 ")", s, table);
-        else
-                r = asprintf(&str, "%" PRIu32, table);
-        if (r < 0)
+        if (s && !append_num) {
+                str = strdup(s);
+                if (!str)
+                        return -ENOMEM;
+
+        } else if (asprintf(&str, "%s%s%" PRIu32 "%s",
+                            strempty(s),
+                            s ? "(" : "",
+                            table,
+                            s ? ")" : "") < 0)
                 return -ENOMEM;
 
         *ret = TAKE_PTR(str);
index b862cd677444a6b05c175ed26c26d7feb72cc331..1b082fc63f0a9562979549016e513e0d89e16828 100644 (file)
@@ -44,6 +44,6 @@ int route_protocol_full_to_string_alloc(int t, char **ret);
 int route_flags_to_string_alloc(uint32_t flags, char **ret);
 
 int manager_get_route_table_from_string(const Manager *m, const char *table, uint32_t *ret);
-int manager_get_route_table_to_string(const Manager *m, uint32_t table, char **ret);
+int manager_get_route_table_to_string(const Manager *m, uint32_t table, bool append_num, char **ret);
 
 CONFIG_PARSER_PROTOTYPE(config_parse_route_table_names);
index 5214a8ad2c91cd789723059add21846fad6eceeb..f7215858e6237ae9d92fff322a87c07e5cb6a44a 100644 (file)
@@ -597,7 +597,7 @@ static void log_route_debug(const Route *route, const char *str, const Link *lin
         if (in_addr_is_set(route->family, &route->prefsrc))
                 (void) in_addr_to_string(route->family, &route->prefsrc, &prefsrc);
         (void) route_scope_to_string_alloc(route->scope, &scope);
-        (void) manager_get_route_table_to_string(manager, route->table, &table);
+        (void) manager_get_route_table_to_string(manager, route->table, /* append_num = */ true, &table);
         (void) route_protocol_full_to_string_alloc(route->protocol, &proto);
         (void) route_flags_to_string_alloc(route->flags, &flags);
 
index 130ed5e0a7bffd03a387dc3f81bb4936ecde6696..ee3b1b275e8fe23b21f368495c73962b14a7d781 100644 (file)
@@ -427,7 +427,7 @@ static void log_routing_policy_rule_debug(const RoutingPolicyRule *rule, const c
                 return;
 
         (void) network_config_state_to_string_alloc(rule->state, &state);
-        (void) manager_get_route_table_to_string(m, rule->table, &table);
+        (void) manager_get_route_table_to_string(m, rule->table, /* append_num = */ true, &table);
 
         log_link_debug(link,
                        "%s %s routing policy rule (%s): priority: %"PRIu32", %s -> %s, iif: %s, oif: %s, table: %s",
index 250ab9eff49fe527fc089814b4f758f73af1bf89..a8db2029414d3abf7ce61be8662b3345fedeae6b 100644 (file)
@@ -114,9 +114,14 @@ static void test_route_tables_one(Manager *manager, const char *name, uint32_t n
         }
 
         assert_se(asprintf(&expected, "%s(%" PRIu32 ")", name, number) >= 0);
-        assert_se(manager_get_route_table_to_string(manager, number, &str) >= 0);
+        assert_se(manager_get_route_table_to_string(manager, number, /* append_num = */ true, &str) >= 0);
         assert_se(streq(str, expected));
 
+        str = mfree(str);
+
+        assert_se(manager_get_route_table_to_string(manager, number, /* append_num = */ false, &str) >= 0);
+        assert_se(streq(str, name));
+
         assert_se(manager_get_route_table_from_string(manager, name, &t) >= 0);
         assert_se(t == number);