diff options
author | Lennart Poettering <lennart@poettering.net> | 2014-07-31 18:02:24 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2014-07-31 18:02:24 +0200 |
commit | 8ac4e9e1e54397f6d1745c2a7a806132418c7da2 (patch) | |
tree | 46b7c39db1ef48fa2e06b79c00831bf727789bad /src | |
parent | 0f47ed0a052c0da743404f23ac3532aaabd23655 (diff) |
resolved: properly process DNAME RRs
Diffstat (limited to 'src')
-rw-r--r-- | src/resolve/resolved-dns-packet.c | 4 | ||||
-rw-r--r-- | src/resolve/resolved-dns-rr.c | 4 | ||||
-rw-r--r-- | src/resolve/resolved-dns-rr.h | 2 |
3 files changed, 6 insertions, 4 deletions
diff --git a/src/resolve/resolved-dns-packet.c b/src/resolve/resolved-dns-packet.c index 32c4876a54..5d4e097c75 100644 --- a/src/resolve/resolved-dns-packet.c +++ b/src/resolve/resolved-dns-packet.c @@ -502,6 +502,7 @@ int dns_packet_append_rr(DnsPacket *p, const DnsResourceRecord *rr, size_t *star case DNS_TYPE_PTR: case DNS_TYPE_NS: case DNS_TYPE_CNAME: + case DNS_TYPE_DNAME: r = dns_packet_append_name(p, rr->ptr.name, NULL); break; @@ -599,7 +600,6 @@ int dns_packet_append_rr(DnsPacket *p, const DnsResourceRecord *rr, size_t *star break; case DNS_TYPE_SRV: - case DNS_TYPE_DNAME: case DNS_TYPE_SSHFP: case _DNS_TYPE_INVALID: /* unparseable */ default: @@ -953,6 +953,7 @@ int dns_packet_read_rr(DnsPacket *p, DnsResourceRecord **ret, size_t *start) { case DNS_TYPE_PTR: case DNS_TYPE_NS: case DNS_TYPE_CNAME: + case DNS_TYPE_DNAME: r = dns_packet_read_name(p, &rr->ptr.name, NULL); break; @@ -1068,7 +1069,6 @@ int dns_packet_read_rr(DnsPacket *p, DnsResourceRecord **ret, size_t *start) { } case DNS_TYPE_SRV: - case DNS_TYPE_DNAME: case DNS_TYPE_SSHFP: default: r = dns_packet_read(p, rdlength, &d, NULL); diff --git a/src/resolve/resolved-dns-rr.c b/src/resolve/resolved-dns-rr.c index b6a2c04cb5..d28224499e 100644 --- a/src/resolve/resolved-dns-rr.c +++ b/src/resolve/resolved-dns-rr.c @@ -237,6 +237,7 @@ DnsResourceRecord* dns_resource_record_unref(DnsResourceRecord *rr) { case DNS_TYPE_PTR: case DNS_TYPE_NS: case DNS_TYPE_CNAME: + case DNS_TYPE_DNAME: free(rr->ptr.name); break; case DNS_TYPE_HINFO: @@ -319,6 +320,7 @@ int dns_resource_record_equal(const DnsResourceRecord *a, const DnsResourceRecor case DNS_TYPE_PTR: case DNS_TYPE_NS: case DNS_TYPE_CNAME: + case DNS_TYPE_DNAME: return dns_name_equal(a->ptr.name, b->ptr.name); case DNS_TYPE_HINFO: @@ -424,6 +426,7 @@ int dns_resource_record_to_string(const DnsResourceRecord *rr, char **ret) { case DNS_TYPE_PTR: case DNS_TYPE_NS: case DNS_TYPE_CNAME: + case DNS_TYPE_DNAME: s = strjoin(k, " ", rr->ptr.name, NULL); if (!s) return -ENOMEM; @@ -591,7 +594,6 @@ static const struct { { DNS_TYPE_AXFR, "AXFR" }, }; - const char *dns_type_to_string(uint16_t type) { unsigned i; diff --git a/src/resolve/resolved-dns-rr.h b/src/resolve/resolved-dns-rr.h index 8fb463946b..027f6cac84 100644 --- a/src/resolve/resolved-dns-rr.h +++ b/src/resolve/resolved-dns-rr.h @@ -95,7 +95,7 @@ struct DnsResourceRecord { struct { char *name; - } ptr, ns, cname; + } ptr, ns, cname, dname; struct { char *cpu; |