From: Mike Yuan Date: Sun, 15 Feb 2026 01:06:19 +0000 (+0100) Subject: sd-json: unify JSON_BUILD_PAIR_IN?_ADDR_* X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=05d1cfee9009aa46126a92a259e7050f8459397f;p=thirdparty%2Fsystemd.git sd-json: unify JSON_BUILD_PAIR_IN?_ADDR_* This also swaps family and address params for plain JSON_BUILD(_PAIR)_IN_ADDR, aligning with _WITH_STRING flavors. --- diff --git a/src/core/varlink-cgroup.c b/src/core/varlink-cgroup.c index ffa3b7ca6d0..2e0c086f952 100644 --- a/src/core/varlink-cgroup.c +++ b/src/core/varlink-cgroup.c @@ -112,7 +112,7 @@ static int ip_address_access_build_json(sd_json_variant **ret, const char *name, r = sd_json_variant_append_arraybo( &v, SD_JSON_BUILD_PAIR_INTEGER("family", i->family), - JSON_BUILD_PAIR_IN_ADDR("address", &i->address, i->family), + JSON_BUILD_PAIR_IN_ADDR("address", i->family, &i->address), SD_JSON_BUILD_PAIR_UNSIGNED("prefixLength", i->prefixlen)); if (r < 0) return r; diff --git a/src/libsystemd/sd-json/json-util.h b/src/libsystemd/sd-json/json-util.h index 3d7d37a30c9..5365eedcae5 100644 --- a/src/libsystemd/sd-json/json-util.h +++ b/src/libsystemd/sd-json/json-util.h @@ -175,9 +175,9 @@ enum { _JSON_BUILD_PAIR_VARIANT_NON_EMPTY, /* _SD_JSON_BUILD_PAIR_VARIANT_ARRAY_NON_EMPTY, */ _JSON_BUILD_PAIR_BYTE_ARRAY_NON_EMPTY, - _JSON_BUILD_PAIR_IN4_ADDR_NON_NULL, - _JSON_BUILD_PAIR_IN6_ADDR_NON_NULL, _JSON_BUILD_PAIR_IN_ADDR_NON_NULL, + _JSON_BUILD_PAIR_IN_ADDR_WITH_STRING, + _JSON_BUILD_PAIR_IN_ADDR_WITH_STRING_NON_NULL, _JSON_BUILD_PAIR_ETHER_ADDR_NON_NULL, _JSON_BUILD_PAIR_HW_ADDR_NON_NULL, _JSON_BUILD_PAIR_DUAL_TIMESTAMP_NON_NULL, @@ -190,12 +190,6 @@ enum { _JSON_BUILD_PAIR_TRISTATE_NON_NULL, _JSON_BUILD_PAIR_PIDREF_NON_NULL, _JSON_BUILD_PAIR_DEVNUM, - _JSON_BUILD_PAIR_IN_ADDR_WITH_STRING, - _JSON_BUILD_PAIR_IN6_ADDR_WITH_STRING, - _JSON_BUILD_PAIR_IN4_ADDR_WITH_STRING, - _JSON_BUILD_PAIR_IN_ADDR_WITH_STRING_NON_NULL, - _JSON_BUILD_PAIR_IN6_ADDR_WITH_STRING_NON_NULL, - _JSON_BUILD_PAIR_IN4_ADDR_WITH_STRING_NON_NULL, _SD_JSON_BUILD_REALLYMAX, }; @@ -206,7 +200,7 @@ enum { #define JSON_BUILD_CONST_STRING(s) _SD_JSON_BUILD_VARIANT, JSON_VARIANT_STRING_CONST(s) #define JSON_BUILD_IN4_ADDR(v) SD_JSON_BUILD_BYTE_ARRAY((const struct in_addr*) { v }, sizeof(struct in_addr)) #define JSON_BUILD_IN6_ADDR(v) SD_JSON_BUILD_BYTE_ARRAY((const struct in6_addr*) { v }, sizeof(struct in6_addr)) -#define JSON_BUILD_IN_ADDR(v, f) SD_JSON_BUILD_BYTE_ARRAY(((const union in_addr_union*) { v })->bytes, FAMILY_ADDRESS_SIZE_SAFE(f)) +#define JSON_BUILD_IN_ADDR(f, v) SD_JSON_BUILD_BYTE_ARRAY(((const union in_addr_union*) { v })->bytes, FAMILY_ADDRESS_SIZE_SAFE(f)) #define JSON_BUILD_ETHER_ADDR(v) SD_JSON_BUILD_BYTE_ARRAY(((const struct ether_addr*) { v })->ether_addr_octet, sizeof(struct ether_addr)) #define JSON_BUILD_HW_ADDR(v) _JSON_BUILD_HW_ADDR, (const struct hw_addr_data*) { v } #define JSON_BUILD_STRING_SET(s) _JSON_BUILD_STRING_SET, (Set *) { s } @@ -229,9 +223,15 @@ enum { #define JSON_BUILD_PAIR_VARIANT_NON_NULL(name, v) _JSON_BUILD_PAIR_VARIANT_NON_NULL, (const char*) { name }, (sd_json_variant*) { v } #define JSON_BUILD_PAIR_VARIANT_NON_EMPTY(name, v) _JSON_BUILD_PAIR_VARIANT_NON_EMPTY, (const char*) { name }, (sd_json_variant*) { v } #define JSON_BUILD_PAIR_BYTE_ARRAY_NON_EMPTY(name, v, n) _JSON_BUILD_PAIR_BYTE_ARRAY_NON_EMPTY, (const char*) { name }, (const void*) { v }, (size_t) { n } -#define JSON_BUILD_PAIR_IN4_ADDR_NON_NULL(name, v) _JSON_BUILD_PAIR_IN4_ADDR_NON_NULL, (const char*) { name }, (const struct in_addr*) { v } -#define JSON_BUILD_PAIR_IN6_ADDR_NON_NULL(name, v) _JSON_BUILD_PAIR_IN6_ADDR_NON_NULL, (const char*) { name }, (const struct in6_addr*) { v } -#define JSON_BUILD_PAIR_IN_ADDR_NON_NULL(name, v, f) _JSON_BUILD_PAIR_IN_ADDR_NON_NULL, (const char*) { name }, (const union in_addr_union*) { v }, (int) { f } +#define JSON_BUILD_PAIR_IN_ADDR_NON_NULL(name, f, v) _JSON_BUILD_PAIR_IN_ADDR_NON_NULL, (const char*) { name }, (int) { f }, (const union in_addr_union*) { v } +#define JSON_BUILD_PAIR_IN4_ADDR_NON_NULL(name, v) _JSON_BUILD_PAIR_IN_ADDR_NON_NULL, (const char*) { name }, AF_INET, &(union in_addr_union) { .in = *(v) } +#define JSON_BUILD_PAIR_IN6_ADDR_NON_NULL(name, v) _JSON_BUILD_PAIR_IN_ADDR_NON_NULL, (const char*) { name }, AF_INET6, &(union in_addr_union) { .in6 = *(v) } +#define JSON_BUILD_PAIR_IN_ADDR_WITH_STRING(name, f, v) _JSON_BUILD_PAIR_IN_ADDR_WITH_STRING, (const char*) { name }, (int) { f }, (const union in_addr_union*) { v } +#define JSON_BUILD_PAIR_IN4_ADDR_WITH_STRING(name, v) _JSON_BUILD_PAIR_IN_ADDR_WITH_STRING, (const char*) { name }, AF_INET, &(union in_addr_union) { .in = *(v) } +#define JSON_BUILD_PAIR_IN6_ADDR_WITH_STRING(name, v) _JSON_BUILD_PAIR_IN_ADDR_WITH_STRING, (const char*) { name }, AF_INET6, &(union in_addr_union) { .in6 = *(v) } +#define JSON_BUILD_PAIR_IN_ADDR_WITH_STRING_NON_NULL(name, f, v) _JSON_BUILD_PAIR_IN_ADDR_WITH_STRING_NON_NULL, (const char*) { name }, (int) { f }, (const union in_addr_union*) { v } +#define JSON_BUILD_PAIR_IN4_ADDR_WITH_STRING_NON_NULL(name, v) _JSON_BUILD_PAIR_IN_ADDR_WITH_STRING_NON_NULL, (const char*) { name }, AF_INET, &(union in_addr_union) { .in = *(v) } +#define JSON_BUILD_PAIR_IN6_ADDR_WITH_STRING_NON_NULL(name, v) _JSON_BUILD_PAIR_IN_ADDR_WITH_STRING_NON_NULL, (const char*) { name }, AF_INET6, &(union in_addr_union) { .in6 = *(v) } #define JSON_BUILD_PAIR_ETHER_ADDR_NON_NULL(name, v) _JSON_BUILD_PAIR_ETHER_ADDR_NON_NULL, (const char*) { name }, (const struct ether_addr*) { v } #define JSON_BUILD_PAIR_HW_ADDR_NON_NULL(name, v) _JSON_BUILD_PAIR_HW_ADDR_NON_NULL, (const char*) { name }, (const struct hw_addr_data*) { v } #define JSON_BUILD_PAIR_DUAL_TIMESTAMP_NON_NULL(name, t) _JSON_BUILD_PAIR_DUAL_TIMESTAMP_NON_NULL, (const char*) { name }, (dual_timestamp*) { t } @@ -243,18 +243,12 @@ enum { #define JSON_BUILD_PAIR_OCTESCAPE_NON_EMPTY(name, v, n) _JSON_BUILD_PAIR_HEX_NON_EMPTY, (const char*) { name }, (const void*) { v }, (size_t) { n } #define JSON_BUILD_PAIR_TRISTATE_NON_NULL(name, i) _JSON_BUILD_PAIR_TRISTATE_NON_NULL, (const char*) { name }, (int) { i } #define JSON_BUILD_PAIR_PIDREF_NON_NULL(name, p) _JSON_BUILD_PAIR_PIDREF_NON_NULL, (const char*) { name }, (const PidRef*) { p } -#define JSON_BUILD_PAIR_IN_ADDR_WITH_STRING(name, f, v) _JSON_BUILD_PAIR_IN_ADDR_WITH_STRING, (const char*) { name }, (int) { f }, (const union in_addr_union*) { v } -#define JSON_BUILD_PAIR_IN6_ADDR_WITH_STRING(name, v) _JSON_BUILD_PAIR_IN6_ADDR_WITH_STRING, (const char*) { name }, (const struct in6_addr*) { v } -#define JSON_BUILD_PAIR_IN4_ADDR_WITH_STRING(name, v) _JSON_BUILD_PAIR_IN4_ADDR_WITH_STRING, (const char*) { name }, (const struct in_addr*) { v } -#define JSON_BUILD_PAIR_IN_ADDR_WITH_STRING_NON_NULL(name, f, v) _JSON_BUILD_PAIR_IN_ADDR_WITH_STRING_NON_NULL, (const char*) { name }, (int) { f }, (const union in_addr_union*) { v } -#define JSON_BUILD_PAIR_IN6_ADDR_WITH_STRING_NON_NULL(name, v) _JSON_BUILD_PAIR_IN6_ADDR_WITH_STRING_NON_NULL, (const char*) { name }, (const struct in6_addr*) { v } -#define JSON_BUILD_PAIR_IN4_ADDR_WITH_STRING_NON_NULL(name, v) _JSON_BUILD_PAIR_IN4_ADDR_WITH_STRING_NON_NULL, (const char*) { name }, (const struct in_addr*) { v } #define JSON_BUILD_PAIR_IOVEC_BASE64(name, iov) SD_JSON_BUILD_PAIR(name, JSON_BUILD_IOVEC_BASE64(iov)) #define JSON_BUILD_PAIR_IOVEC_HEX(name, iov) SD_JSON_BUILD_PAIR(name, JSON_BUILD_IOVEC_HEX(iov)) #define JSON_BUILD_PAIR_IN4_ADDR(name, v) SD_JSON_BUILD_PAIR(name, JSON_BUILD_IN4_ADDR(v)) #define JSON_BUILD_PAIR_IN6_ADDR(name, v) SD_JSON_BUILD_PAIR(name, JSON_BUILD_IN6_ADDR(v)) -#define JSON_BUILD_PAIR_IN_ADDR(name, v, f) SD_JSON_BUILD_PAIR(name, JSON_BUILD_IN_ADDR(v, f)) +#define JSON_BUILD_PAIR_IN_ADDR(name, f, v) SD_JSON_BUILD_PAIR(name, JSON_BUILD_IN_ADDR(f, v)) #define JSON_BUILD_PAIR_ETHER_ADDR(name, v) SD_JSON_BUILD_PAIR(name, JSON_BUILD_ETHER_ADDR(v)) #define JSON_BUILD_PAIR_HW_ADDR(name, v) SD_JSON_BUILD_PAIR(name, JSON_BUILD_HW_ADDR(v)) #define JSON_BUILD_PAIR_STRING_SET(name, s) SD_JSON_BUILD_PAIR(name, JSON_BUILD_STRING_SET(s)) diff --git a/src/libsystemd/sd-json/sd-json.c b/src/libsystemd/sd-json/sd-json.c index 3278fba6a84..4ac50c20c9b 100644 --- a/src/libsystemd/sd-json/sd-json.c +++ b/src/libsystemd/sd-json/sd-json.c @@ -4666,9 +4666,12 @@ _public_ int sd_json_buildv(sd_json_variant **ret, va_list ap) { break; } - case _JSON_BUILD_PAIR_IN4_ADDR_NON_NULL: { - const struct in_addr *a; + case _JSON_BUILD_PAIR_IN_ADDR_NON_NULL: + case _JSON_BUILD_PAIR_IN_ADDR_WITH_STRING_NON_NULL: + case _JSON_BUILD_PAIR_IN_ADDR_WITH_STRING: { + const union in_addr_union *a; const char *n; + int f; if (current->expect != EXPECT_OBJECT_KEY) { r = -EINVAL; @@ -4676,77 +4679,53 @@ _public_ int sd_json_buildv(sd_json_variant **ret, va_list ap) { } n = va_arg(ap, const char *); - a = va_arg(ap, const struct in_addr *); - - if (a && in4_addr_is_set(a) && current->n_suppress == 0) { - r = sd_json_variant_new_string(&add, n); - if (r < 0) - goto finish; - - r = sd_json_variant_new_array_bytes(&add_more, a, sizeof(struct in_addr)); - if (r < 0) - goto finish; - } - - n_subtract = 2; /* we generated two items */ - - current->expect = EXPECT_OBJECT_KEY; - break; - } - - case _JSON_BUILD_PAIR_IN6_ADDR_NON_NULL: { - const struct in6_addr *a; - const char *n; + f = va_arg(ap, int); + a = va_arg(ap, const union in_addr_union *); - if (current->expect != EXPECT_OBJECT_KEY) { - r = -EINVAL; - goto finish; - } + if (current->n_suppress == 0 && + ((a && in_addr_is_set(f, a)) || + command == _JSON_BUILD_PAIR_IN_ADDR_WITH_STRING)) { - n = va_arg(ap, const char *); - a = va_arg(ap, const struct in6_addr *); + if (!a) + a = &IN_ADDR_NULL; - if (a && in6_addr_is_set(a) && current->n_suppress == 0) { r = sd_json_variant_new_string(&add, n); if (r < 0) goto finish; - r = sd_json_variant_new_array_bytes(&add_more, a, sizeof(struct in6_addr)); + r = sd_json_variant_new_array_bytes(&add_more, a->bytes, FAMILY_ADDRESS_SIZE_SAFE(f)); if (r < 0) goto finish; - } - n_subtract = 2; /* we generated two items */ - - current->expect = EXPECT_OBJECT_KEY; - break; - } + if (IN_SET(command, _JSON_BUILD_PAIR_IN_ADDR_WITH_STRING, _JSON_BUILD_PAIR_IN_ADDR_WITH_STRING_NON_NULL)) { + _cleanup_free_ char *string_key_name = NULL; + _cleanup_(sd_json_variant_unrefp) sd_json_variant *string_key = NULL, *string_value = NULL; - case _JSON_BUILD_PAIR_IN_ADDR_NON_NULL: { - const union in_addr_union *a; - const char *n; - int f; + string_key_name = strjoin(n, "String"); + if (!string_key_name) { + r = -ENOMEM; + goto finish; + } - if (current->expect != EXPECT_OBJECT_KEY) { - r = -EINVAL; - goto finish; - } + r = sd_json_variant_new_string(&string_key, string_key_name); + if (r < 0) + goto finish; - n = va_arg(ap, const char *); - a = va_arg(ap, const union in_addr_union *); - f = va_arg(ap, int); + r = sd_json_variant_new_string(&string_value, IN_ADDR_TO_STRING(f, a)); + if (r < 0) + goto finish; - if (a && in_addr_is_set(f, a) && current->n_suppress == 0) { - r = sd_json_variant_new_string(&add, n); - if (r < 0) - goto finish; + if (!GREEDY_REALLOC(current->elements, current->n_elements + 2)) { + r = -ENOMEM; + goto finish; + } - r = sd_json_variant_new_array_bytes(&add_more, a->bytes, FAMILY_ADDRESS_SIZE_SAFE(f)); - if (r < 0) - goto finish; + current->elements[current->n_elements++] = TAKE_PTR(string_key); + current->elements[current->n_elements++] = TAKE_PTR(string_value); + } } - n_subtract = 2; /* we generated two items */ + n_subtract = command == _JSON_BUILD_PAIR_IN_ADDR_NON_NULL ? 2 : 4; current->expect = EXPECT_OBJECT_KEY; break; @@ -4896,207 +4875,6 @@ _public_ int sd_json_buildv(sd_json_variant **ret, va_list ap) { break; } - case _JSON_BUILD_PAIR_IN_ADDR_WITH_STRING_NON_NULL: - case _JSON_BUILD_PAIR_IN_ADDR_WITH_STRING: { - const union in_addr_union *a; - const char *n; - int f; - - if (current->expect != EXPECT_OBJECT_KEY) { - r = -EINVAL; - goto finish; - } - - n = va_arg(ap, const char *); - f = va_arg(ap, int); - a = va_arg(ap, const union in_addr_union *); - - if (current->n_suppress == 0) { - bool have_address = a && in_addr_is_set(f, a); - - if (have_address || command != _JSON_BUILD_PAIR_IN_ADDR_WITH_STRING_NON_NULL) { - _cleanup_free_ char *addr_str = NULL, *string_key_name = NULL; - _cleanup_(sd_json_variant_unrefp) sd_json_variant *string_key = NULL, *string_value = NULL; - - /* For non-NON_NULL variant, always convert address to string (even if all zeros). - * For NON_NULL variant, we only get here when have_address is true. */ - if (a) { - r = in_addr_to_string(f, a, &addr_str); - if (r < 0) - goto finish; - } - - string_key_name = strjoin(n, "String"); - if (!string_key_name) { - r = -ENOMEM; - goto finish; - } - - r = sd_json_variant_new_string(&add, n); - if (r < 0) - goto finish; - - r = sd_json_variant_new_array_bytes(&add_more, a->bytes, FAMILY_ADDRESS_SIZE_SAFE(f)); - if (r < 0) - goto finish; - - r = sd_json_variant_new_string(&string_key, string_key_name); - if (r < 0) - goto finish; - - r = sd_json_variant_new_string(&string_value, addr_str); - if (r < 0) - goto finish; - - if (!GREEDY_REALLOC(current->elements, current->n_elements + 2)) { - r = -ENOMEM; - goto finish; - } - - current->elements[current->n_elements++] = TAKE_PTR(string_key); - current->elements[current->n_elements++] = TAKE_PTR(string_value); - } - } - - n_subtract = 4; /* we generated two pairs (binary and string) */ - - current->expect = EXPECT_OBJECT_KEY; - break; - } - - case _JSON_BUILD_PAIR_IN6_ADDR_WITH_STRING_NON_NULL: - case _JSON_BUILD_PAIR_IN6_ADDR_WITH_STRING: { - const struct in6_addr *a; - const char *n; - - if (current->expect != EXPECT_OBJECT_KEY) { - r = -EINVAL; - goto finish; - } - - n = va_arg(ap, const char *); - a = va_arg(ap, const struct in6_addr *); - - if (current->n_suppress == 0) { - bool have_address = a && in6_addr_is_set(a); - - if (have_address || command != _JSON_BUILD_PAIR_IN6_ADDR_WITH_STRING_NON_NULL) { - _cleanup_free_ char *addr_str = NULL, *string_key_name = NULL; - _cleanup_(sd_json_variant_unrefp) sd_json_variant *string_key = NULL, *string_value = NULL; - - /* For non-NON_NULL variant, always convert address to string (even if all zeros). - * For NON_NULL variant, we only get here when have_address is true. */ - if (a) { - r = in6_addr_to_string(a, &addr_str); - if (r < 0) - goto finish; - } - - string_key_name = strjoin(n, "String"); - if (!string_key_name) { - r = -ENOMEM; - goto finish; - } - - r = sd_json_variant_new_string(&add, n); - if (r < 0) - goto finish; - - r = sd_json_variant_new_array_bytes(&add_more, a, sizeof(struct in6_addr)); - if (r < 0) - goto finish; - - r = sd_json_variant_new_string(&string_key, string_key_name); - if (r < 0) - goto finish; - - r = sd_json_variant_new_string(&string_value, addr_str); - if (r < 0) - goto finish; - - if (!GREEDY_REALLOC(current->elements, current->n_elements + 2)) { - r = -ENOMEM; - goto finish; - } - - current->elements[current->n_elements++] = TAKE_PTR(string_key); - current->elements[current->n_elements++] = TAKE_PTR(string_value); - } - } - - n_subtract = 4; /* we generated two pairs (binary and string) */ - - current->expect = EXPECT_OBJECT_KEY; - break; - } - - case _JSON_BUILD_PAIR_IN4_ADDR_WITH_STRING_NON_NULL: - case _JSON_BUILD_PAIR_IN4_ADDR_WITH_STRING: { - const struct in_addr *a; - const char *n; - - if (current->expect != EXPECT_OBJECT_KEY) { - r = -EINVAL; - goto finish; - } - - n = va_arg(ap, const char *); - a = va_arg(ap, const struct in_addr *); - - if (current->n_suppress == 0) { - bool have_address = a && !in4_addr_is_null(a); - - if (have_address || command != _JSON_BUILD_PAIR_IN4_ADDR_WITH_STRING_NON_NULL) { - _cleanup_free_ char *addr_str = NULL, *string_key_name = NULL; - _cleanup_(sd_json_variant_unrefp) sd_json_variant *string_key = NULL, *string_value = NULL; - - /* For non-NON_NULL variant, always convert address to string (even if all zeros). - * For NON_NULL variant, we only get here when have_address is true. */ - if (a) { - union in_addr_union addr_union = { .in = *a }; - r = in_addr_to_string(AF_INET, &addr_union, &addr_str); - if (r < 0) - goto finish; - } - - string_key_name = strjoin(n, "String"); - if (!string_key_name) { - r = -ENOMEM; - goto finish; - } - - r = sd_json_variant_new_string(&add, n); - if (r < 0) - goto finish; - - r = sd_json_variant_new_array_bytes(&add_more, a, sizeof(struct in_addr)); - if (r < 0) - goto finish; - - r = sd_json_variant_new_string(&string_key, string_key_name); - if (r < 0) - goto finish; - - r = sd_json_variant_new_string(&string_value, addr_str); - if (r < 0) - goto finish; - - if (!GREEDY_REALLOC(current->elements, current->n_elements + 2)) { - r = -ENOMEM; - goto finish; - } - - current->elements[current->n_elements++] = TAKE_PTR(string_key); - current->elements[current->n_elements++] = TAKE_PTR(string_value); - } - } - - n_subtract = 4; /* we generated two pairs (binary and string) */ - - current->expect = EXPECT_OBJECT_KEY; - break; - } - case _JSON_BUILD_PAIR_CALLBACK_NON_NULL: { sd_json_build_callback_t cb; void *userdata; diff --git a/src/network/networkd-json.c b/src/network/networkd-json.c index 123594179cb..de1a8829ee9 100644 --- a/src/network/networkd-json.c +++ b/src/network/networkd-json.c @@ -623,7 +623,7 @@ static int dnr_append_json_one(Link *link, const struct sd_dns_resolver *res, Ne FOREACH_ARRAY(addr, res->addrs, res->n_addrs) { r = sd_json_variant_append_arrayb( &addrs_array, - JSON_BUILD_IN_ADDR(addr, res->family)); + JSON_BUILD_IN_ADDR(res->family, addr)); if (r < 0) return r; } @@ -644,7 +644,7 @@ static int dnr_append_json_one(Link *link, const struct sd_dns_resolver *res, Ne JSON_BUILD_PAIR_STRING_NON_EMPTY("DoHPath", res->dohpath), JSON_BUILD_PAIR_STRV_NON_EMPTY("Transports", transports), SD_JSON_BUILD_PAIR_STRING("ConfigSource", network_config_source_to_string(s)), - JSON_BUILD_PAIR_IN_ADDR_NON_NULL("ConfigProvider", p, res->family))); + JSON_BUILD_PAIR_IN_ADDR_NON_NULL("ConfigProvider", res->family, p))); } static int dnr_append_json(Link *link, sd_json_variant **v) { @@ -733,7 +733,7 @@ static int server_append_json_one_addr(int family, const union in_addr_union *a, return sd_json_variant_append_arraybo( array, SD_JSON_BUILD_PAIR_INTEGER("Family", family), - JSON_BUILD_PAIR_IN_ADDR("Address", a, family), + JSON_BUILD_PAIR_IN_ADDR("Address", family, a), SD_JSON_BUILD_PAIR_STRING("AddressString", address_str), SD_JSON_BUILD_PAIR_STRING("ConfigSource", network_config_source_to_string(s)), JSON_BUILD_PAIR_IN_ADDR_WITH_STRING_NON_NULL("ConfigProvider", family, p)); diff --git a/src/resolve/resolved-dns-server.c b/src/resolve/resolved-dns-server.c index 83082631f79..4f04476f2d4 100644 --- a/src/resolve/resolved-dns-server.c +++ b/src/resolve/resolved-dns-server.c @@ -1374,7 +1374,7 @@ int dns_server_dump_configuration_to_json(DnsServer *server, sd_json_variant **r return sd_json_buildo( ret, JSON_BUILD_PAIR_STRING_NON_EMPTY("addressString", dns_server_string(server)), - JSON_BUILD_PAIR_IN_ADDR("address", &server->address, server->family), + JSON_BUILD_PAIR_IN_ADDR("address", server->family, &server->address), SD_JSON_BUILD_PAIR_INTEGER("family", server->family), SD_JSON_BUILD_PAIR_UNSIGNED("port", dns_server_port(server)), SD_JSON_BUILD_PAIR_CONDITION(ifindex > 0, "ifindex", SD_JSON_BUILD_UNSIGNED(ifindex)),