]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
resolved: suppress ifindex info in varlink JSON responses if zero
authorLennart Poettering <lennart@poettering.net>
Fri, 5 Feb 2021 17:43:55 +0000 (18:43 +0100)
committerLennart Poettering <lennart@poettering.net>
Fri, 5 Feb 2021 23:17:10 +0000 (00:17 +0100)
If we don't have ifindex info, don't set the field for it.

We already do that for parsed IP address replies, let's do it for all
cases: it's a bit nicer to suppress the ifindex prop if it doesn't apply
than to pass it invalid.

This is the other side of #18482, i.e. fixes things so that the parser
doesn't get tripped up by this.

(This too makes a problem go away we should track down properly, i.e.
figure out how the ifindex got lost in
https://github.com/systemd/systemd/pull/17823#issuecomment-742439422 )

src/resolve/resolved-varlink.c

index 2fb9d38dfaa897c06c9905005ef59381c8f303ba..9a8a4f3013f6e7717849d1aff842a0b6ebfcac0d 100644 (file)
@@ -180,7 +180,7 @@ static void vl_method_resolve_hostname_complete(DnsQuery *q) {
 
                 r = json_build(&entry,
                                JSON_BUILD_OBJECT(
-                                               JSON_BUILD_PAIR("ifindex", JSON_BUILD_INTEGER(ifindex)),
+                                               JSON_BUILD_PAIR_CONDITION(ifindex > 0, "ifindex", JSON_BUILD_INTEGER(ifindex)),
                                                JSON_BUILD_PAIR("family", JSON_BUILD_INTEGER(family)),
                                                JSON_BUILD_PAIR("address", JSON_BUILD_BYTE_ARRAY(p, FAMILY_ADDRESS_SIZE(family)))));
                 if (r < 0)
@@ -408,7 +408,7 @@ static void vl_method_resolve_address_complete(DnsQuery *q) {
 
                 r = json_build(&entry,
                                JSON_BUILD_OBJECT(
-                                               JSON_BUILD_PAIR("ifindex", JSON_BUILD_INTEGER(ifindex)),
+                                               JSON_BUILD_PAIR_CONDITION(ifindex > 0, "ifindex", JSON_BUILD_INTEGER(ifindex)),
                                                JSON_BUILD_PAIR("name", JSON_BUILD_STRING(normalized))));
                 if (r < 0)
                         goto finish;