mirror of
https://github.com/morgan9e/systemd
synced 2026-04-15 00:47:10 +09:00
resolvectl: output slightly more data when --raw=payload is used
Let's also show A/AAAA data in binary form if --raw=payload is used. For these RR types there's only a single data field, hence it's obbviously meant. Inspired by: #37737
This commit is contained in:
@@ -489,7 +489,7 @@ static int output_rr_packet(const void *d, size_t l, int ifindex) {
|
||||
return r;
|
||||
|
||||
} else if (arg_raw == RAW_PAYLOAD) {
|
||||
void *data;
|
||||
const void *data;
|
||||
ssize_t k;
|
||||
|
||||
k = dns_resource_record_payload(rr, &data);
|
||||
|
||||
@@ -1355,9 +1355,9 @@ const char* dns_resource_record_to_string(DnsResourceRecord *rr) {
|
||||
return TAKE_PTR(s);
|
||||
}
|
||||
|
||||
ssize_t dns_resource_record_payload(DnsResourceRecord *rr, void **out) {
|
||||
ssize_t dns_resource_record_payload(DnsResourceRecord *rr, const void **ret) {
|
||||
assert(rr);
|
||||
assert(out);
|
||||
assert(ret);
|
||||
|
||||
switch (rr->unparsable ? _DNS_TYPE_INVALID : rr->key->type) {
|
||||
case DNS_TYPE_SRV:
|
||||
@@ -1368,8 +1368,6 @@ ssize_t dns_resource_record_payload(DnsResourceRecord *rr, void **out) {
|
||||
case DNS_TYPE_HINFO:
|
||||
case DNS_TYPE_SPF:
|
||||
case DNS_TYPE_TXT:
|
||||
case DNS_TYPE_A:
|
||||
case DNS_TYPE_AAAA:
|
||||
case DNS_TYPE_SOA:
|
||||
case DNS_TYPE_MX:
|
||||
case DNS_TYPE_LOC:
|
||||
@@ -1380,17 +1378,25 @@ ssize_t dns_resource_record_payload(DnsResourceRecord *rr, void **out) {
|
||||
case DNS_TYPE_NSEC3:
|
||||
return -EINVAL;
|
||||
|
||||
case DNS_TYPE_A:
|
||||
*ret = &rr->a.in_addr;
|
||||
return sizeof(rr->a.in_addr);
|
||||
|
||||
case DNS_TYPE_AAAA:
|
||||
*ret = &rr->aaaa.in6_addr;
|
||||
return sizeof(rr->aaaa.in6_addr);
|
||||
|
||||
case DNS_TYPE_SSHFP:
|
||||
*out = rr->sshfp.fingerprint;
|
||||
*ret = rr->sshfp.fingerprint;
|
||||
return rr->sshfp.fingerprint_size;
|
||||
|
||||
case DNS_TYPE_TLSA:
|
||||
*out = rr->tlsa.data;
|
||||
*ret = rr->tlsa.data;
|
||||
return rr->tlsa.data_size;
|
||||
|
||||
case DNS_TYPE_OPENPGPKEY:
|
||||
default:
|
||||
*out = rr->generic.data;
|
||||
*ret = rr->generic.data;
|
||||
return rr->generic.data_size;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -335,7 +335,7 @@ int dns_resource_key_match_soa(const DnsResourceKey *key, const DnsResourceKey *
|
||||
#define DNS_RESOURCE_KEY_STRING_MAX (_DNS_CLASS_STRING_MAX + _DNS_TYPE_STRING_MAX + DNS_HOSTNAME_MAX + 1)
|
||||
|
||||
char* dns_resource_key_to_string(const DnsResourceKey *key, char *buf, size_t buf_size);
|
||||
ssize_t dns_resource_record_payload(DnsResourceRecord *rr, void **out);
|
||||
ssize_t dns_resource_record_payload(DnsResourceRecord *rr, const void **ret);
|
||||
|
||||
#define DNS_RESOURCE_KEY_TO_STRING(key) \
|
||||
dns_resource_key_to_string(key, (char[DNS_RESOURCE_KEY_STRING_MAX]) {}, DNS_RESOURCE_KEY_STRING_MAX)
|
||||
|
||||
Reference in New Issue
Block a user