From: Zbigniew Jędrzejewski-Szmek Date: Sun, 11 Oct 2020 10:19:46 +0000 (+0200) Subject: resolvectl: sort domain/nta output X-Git-Tag: v247-rc1~19^2~5 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=af781878d5986127ca00831c4b524c2b62649823;p=thirdparty%2Fsystemd.git resolvectl: sort domain/nta output dns list shall not be sorted. --- diff --git a/src/resolve/resolvectl.c b/src/resolve/resolvectl.c index 523b0be1c38..48532d9bde5 100644 --- a/src/resolve/resolvectl.c +++ b/src/resolve/resolvectl.c @@ -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) }, diff --git a/src/shared/bus-map-properties.c b/src/shared/bus-map-properties.c index ab393c39520..5cc8ce222d8 100644 --- a/src/shared/bus-map-properties.c +++ b/src/shared/bus-map-properties.c @@ -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; diff --git a/src/shared/bus-map-properties.h b/src/shared/bus-map-properties.h index 11b899227b2..94242ecc3f7 100644 --- a/src/shared/bus-map-properties.h +++ b/src/shared/bus-map-properties.h @@ -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,