1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2024-10-27 18:55:09 +03:00

resolve-host: show whether DNSSEC is supported or not in --statistics output

This should be generally useful information, hence show it.
This commit is contained in:
Lennart Poettering 2016-01-19 17:11:28 +01:00
parent 786c8e9fbc
commit 593f665cd5
2 changed files with 49 additions and 1 deletions

View File

@ -771,10 +771,26 @@ static int show_statistics(sd_bus *bus) {
uint64_t n_current_transactions, n_total_transactions, uint64_t n_current_transactions, n_total_transactions,
cache_size, n_cache_hit, n_cache_miss, cache_size, n_cache_hit, n_cache_miss,
n_dnssec_secure, n_dnssec_insecure, n_dnssec_bogus, n_dnssec_indeterminate; n_dnssec_secure, n_dnssec_insecure, n_dnssec_bogus, n_dnssec_indeterminate;
int r; int r, dnssec_supported;
assert(bus); assert(bus);
r = sd_bus_get_property_trivial(bus,
"org.freedesktop.resolve1",
"/org/freedesktop/resolve1",
"org.freedesktop.resolve1.Manager",
"DNSSECSupported",
&error,
'b',
&dnssec_supported);
if (r < 0)
return log_error_errno(r, "Failed to get DNSSEC supported state: %s", bus_error_message(&error, r));
printf("DNSSEC supported by current servers: %s%s%s\n\n",
ansi_highlight(),
yes_no(dnssec_supported),
ansi_normal());
r = sd_bus_get_property(bus, r = sd_bus_get_property(bus,
"org.freedesktop.resolve1", "org.freedesktop.resolve1",
"/org/freedesktop/resolve1", "/org/freedesktop/resolve1",

View File

@ -1292,6 +1292,37 @@ static int bus_property_get_dnssec_statistics(
(uint64_t) m->n_dnssec_indeterminate); (uint64_t) m->n_dnssec_indeterminate);
} }
static int bus_property_get_dnssec_supported(
sd_bus *bus,
const char *path,
const char *interface,
const char *property,
sd_bus_message *reply,
void *userdata,
sd_bus_error *error) {
Manager *m = userdata;
DnsServer *server;
bool supported = true;
Iterator i;
Link *l;
assert(reply);
assert(m);
server = manager_get_dns_server(m);
if (server)
supported = supported && dns_server_dnssec_supported(server);
HASHMAP_FOREACH(l, m->links, i) {
server = link_get_dns_server(l);
if (server)
supported = supported && dns_server_dnssec_supported(server);
}
return sd_bus_message_append(reply, "b", supported);
}
static int bus_method_reset_statistics(sd_bus_message *message, void *userdata, sd_bus_error *error) { static int bus_method_reset_statistics(sd_bus_message *message, void *userdata, sd_bus_error *error) {
Manager *m = userdata; Manager *m = userdata;
DnsScope *s; DnsScope *s;
@ -1316,6 +1347,7 @@ static const sd_bus_vtable resolve_vtable[] = {
SD_BUS_PROPERTY("TransactionStatistics", "(tt)", bus_property_get_transaction_statistics, 0, 0), SD_BUS_PROPERTY("TransactionStatistics", "(tt)", bus_property_get_transaction_statistics, 0, 0),
SD_BUS_PROPERTY("CacheStatistics", "(ttt)", bus_property_get_cache_statistics, 0, 0), SD_BUS_PROPERTY("CacheStatistics", "(ttt)", bus_property_get_cache_statistics, 0, 0),
SD_BUS_PROPERTY("DNSSECStatistics", "(tttt)", bus_property_get_dnssec_statistics, 0, 0), SD_BUS_PROPERTY("DNSSECStatistics", "(tttt)", bus_property_get_dnssec_statistics, 0, 0),
SD_BUS_PROPERTY("DNSSECSupported", "b", bus_property_get_dnssec_supported, 0, 0),
SD_BUS_METHOD("ResolveHostname", "isit", "a(iiay)st", bus_method_resolve_hostname, SD_BUS_VTABLE_UNPRIVILEGED), SD_BUS_METHOD("ResolveHostname", "isit", "a(iiay)st", bus_method_resolve_hostname, SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_METHOD("ResolveAddress", "iiayt", "a(is)t", bus_method_resolve_address, SD_BUS_VTABLE_UNPRIVILEGED), SD_BUS_METHOD("ResolveAddress", "iiayt", "a(is)t", bus_method_resolve_address, SD_BUS_VTABLE_UNPRIVILEGED),