From: Yu Watanabe Date: Thu, 6 Nov 2025 18:07:28 +0000 (+0900) Subject: resolvectl: use string table X-Git-Tag: v259-rc1~105^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f2f89678ec1487d4c31a6b73371c57fc2c254d6a;p=thirdparty%2Fsystemd.git resolvectl: use string table Follow-up for 0536b37629c163af268975fcc3017cad823b1e9b. --- diff --git a/src/resolve/resolvectl.c b/src/resolve/resolvectl.c index 07c1aa27f5f..f56ee00c22f 100644 --- a/src/resolve/resolvectl.c +++ b/src/resolve/resolvectl.c @@ -105,8 +105,24 @@ typedef enum StatusMode { STATUS_DNS_OVER_TLS, STATUS_DNSSEC, STATUS_NTA, + _STATUS_MAX, + _STATUS_INVALID = -EINVAL, } StatusMode; +static const char* const status_mode_json_field_table[_STATUS_MAX] = { + [STATUS_ALL] = NULL, + [STATUS_DNS] = "servers", + [STATUS_DOMAIN] = "searchDomains", + [STATUS_DEFAULT_ROUTE] = "defaultRoute", + [STATUS_LLMNR] = "llmnr", + [STATUS_MDNS] = "mDNS", + [STATUS_DNS_OVER_TLS] = "dnsOverTLS", + [STATUS_DNSSEC] = "dnssec", + [STATUS_NTA] = "negativeTrustAnchors", +}; + +DEFINE_PRIVATE_STRING_TABLE_LOOKUP_TO_STRING(status_mode_json_field, StatusMode); + typedef struct InterfaceInfo { int index; const char *name; @@ -1793,41 +1809,6 @@ static char** global_protocol_status(const GlobalInfo *info) { return TAKE_PTR(s); } -static const char* status_mode_to_json_field(StatusMode mode) { - switch (mode) { - - case STATUS_ALL: - return NULL; - - case STATUS_DNS: - return "servers"; - - case STATUS_DOMAIN: - return "searchDomains"; - - case STATUS_DEFAULT_ROUTE: - return "defaultRoute"; - - case STATUS_LLMNR: - return "llmnr"; - - case STATUS_MDNS: - return "mDNS"; - - case STATUS_DNS_OVER_TLS: - return "dnsOverTLS"; - - case STATUS_DNSSEC: - return "dnssec"; - - case STATUS_NTA: - return "negativeTrustAnchors"; - - default: - assert_not_reached(); - } -} - static int status_json_filter_fields(sd_json_variant **configuration, StatusMode mode) { _cleanup_(sd_json_variant_unrefp) sd_json_variant *v = NULL; sd_json_variant *w; @@ -1836,7 +1817,7 @@ static int status_json_filter_fields(sd_json_variant **configuration, StatusMode assert(configuration); - field = status_mode_to_json_field(mode); + field = status_mode_json_field_to_string(mode); if (!field) /* Nothing to filter for this mode. */ return 0;