]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
resolvectl: sort domain/nta output
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sun, 11 Oct 2020 10:19:46 +0000 (12:19 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 20 Oct 2020 17:58:37 +0000 (19:58 +0200)
dns list shall not be sorted.

src/resolve/resolvectl.c
src/shared/bus-map-properties.c
src/shared/bus-map-properties.h

index 523b0be1c3851e587f98b3f0dff205c882492ec1..48532d9bde5cc78cfd6c47683afa7760ee01f854 100644 (file)
@@ -1299,6 +1299,8 @@ static int map_link_domains(sd_bus *bus, const char *member, sd_bus_message *m,
         if (r < 0)
                 return r;
 
+        strv_sort(*l);
+
         return 0;
 }
 
@@ -1417,7 +1419,7 @@ static int status_ifindex(sd_bus *bus, int ifindex, const char *name, StatusMode
                 { "MulticastDNS",               "s",        NULL,                           offsetof(LinkInfo, mdns)             },
                 { "DNSOverTLS",                 "s",        NULL,                           offsetof(LinkInfo, dns_over_tls)     },
                 { "DNSSEC",                     "s",        NULL,                           offsetof(LinkInfo, dnssec)           },
-                { "DNSSECNegativeTrustAnchors", "as",       NULL,                           offsetof(LinkInfo, ntas)             },
+                { "DNSSECNegativeTrustAnchors", "as",       bus_map_strv_sort,              offsetof(LinkInfo, ntas)             },
                 { "DNSSECSupported",            "b",        NULL,                           offsetof(LinkInfo, dnssec_supported) },
                 {}
         };
@@ -1682,6 +1684,8 @@ static int map_global_domains(sd_bus *bus, const char *member, sd_bus_message *m
         if (r < 0)
                 return r;
 
+        strv_sort(*l);
+
         return 0;
 }
 
@@ -1694,7 +1698,7 @@ static int status_global(sd_bus *bus, StatusMode mode, bool *empty_line) {
                 { "CurrentDNSServer",           "(iiay)",    map_global_current_dns_server,    offsetof(GlobalInfo, current_dns)      },
                 { "CurrentDNSServerEx",         "(iiayqs)",  map_global_current_dns_server_ex, offsetof(GlobalInfo, current_dns_ex)   },
                 { "Domains",                    "a(isb)",    map_global_domains,               offsetof(GlobalInfo, domains)          },
-                { "DNSSECNegativeTrustAnchors", "as",        NULL,                             offsetof(GlobalInfo, ntas)             },
+                { "DNSSECNegativeTrustAnchors", "as",        bus_map_strv_sort,                offsetof(GlobalInfo, ntas)             },
                 { "LLMNR",                      "s",         NULL,                             offsetof(GlobalInfo, llmnr)            },
                 { "MulticastDNS",               "s",         NULL,                             offsetof(GlobalInfo, mdns)             },
                 { "DNSOverTLS",                 "s",         NULL,                             offsetof(GlobalInfo, dns_over_tls)     },
index ab393c395204c904642b29c78d14c8a45ca2bd96..5cc8ce222d865f70b7228aaa4f6c8cab8aabe45c 100644 (file)
@@ -25,6 +25,23 @@ int bus_map_id128(sd_bus *bus, const char *member, sd_bus_message *m, sd_bus_err
         return 0;
 }
 
+int bus_map_strv_sort(sd_bus *bus, const char *member, sd_bus_message *m, sd_bus_error *error, void *userdata) {
+        _cleanup_strv_free_ char **l = NULL;
+        char ***p = userdata;
+        int r;
+
+        r = bus_message_read_strv_extend(m, &l);
+        if (r < 0)
+                return r;
+
+        r = strv_extend_strv(p, l, false);
+        if (r < 0)
+                return r;
+
+        strv_sort(*p);
+        return 0;
+}
+
 static int map_basic(sd_bus *bus, const char *member, sd_bus_message *m, unsigned flags, sd_bus_error *error, void *userdata) {
         char type;
         int r;
index 11b899227b2f0895a85fc97c8596332f821eb661..94242ecc3f787e54bd9ba5095ee455c093a93aab 100644 (file)
@@ -18,6 +18,7 @@ enum {
 };
 
 int bus_map_id128(sd_bus *bus, const char *member, sd_bus_message *m, sd_bus_error *error, void *userdata);
+int bus_map_strv_sort(sd_bus *bus, const char *member, sd_bus_message *m, sd_bus_error *error, void *userdata);
 
 int bus_message_map_all_properties(sd_bus_message *m, const struct bus_properties_map *map, unsigned flags, sd_bus_error *error, void *userdata);
 int bus_map_all_properties(sd_bus *bus, const char *destination, const char *path, const struct bus_properties_map *map,