1
0
mirror of https://github.com/systemd/systemd.git synced 2024-11-05 06:52:22 +03:00

resolved: properly process DNAME RRs

This commit is contained in:
Lennart Poettering 2014-07-31 18:02:24 +02:00
parent 0f47ed0a05
commit 8ac4e9e1e5
3 changed files with 6 additions and 4 deletions

View File

@ -502,6 +502,7 @@ int dns_packet_append_rr(DnsPacket *p, const DnsResourceRecord *rr, size_t *star
case DNS_TYPE_PTR: case DNS_TYPE_PTR:
case DNS_TYPE_NS: case DNS_TYPE_NS:
case DNS_TYPE_CNAME: case DNS_TYPE_CNAME:
case DNS_TYPE_DNAME:
r = dns_packet_append_name(p, rr->ptr.name, NULL); r = dns_packet_append_name(p, rr->ptr.name, NULL);
break; break;
@ -599,7 +600,6 @@ int dns_packet_append_rr(DnsPacket *p, const DnsResourceRecord *rr, size_t *star
break; break;
case DNS_TYPE_SRV: case DNS_TYPE_SRV:
case DNS_TYPE_DNAME:
case DNS_TYPE_SSHFP: case DNS_TYPE_SSHFP:
case _DNS_TYPE_INVALID: /* unparseable */ case _DNS_TYPE_INVALID: /* unparseable */
default: default:
@ -953,6 +953,7 @@ int dns_packet_read_rr(DnsPacket *p, DnsResourceRecord **ret, size_t *start) {
case DNS_TYPE_PTR: case DNS_TYPE_PTR:
case DNS_TYPE_NS: case DNS_TYPE_NS:
case DNS_TYPE_CNAME: case DNS_TYPE_CNAME:
case DNS_TYPE_DNAME:
r = dns_packet_read_name(p, &rr->ptr.name, NULL); r = dns_packet_read_name(p, &rr->ptr.name, NULL);
break; break;
@ -1068,7 +1069,6 @@ int dns_packet_read_rr(DnsPacket *p, DnsResourceRecord **ret, size_t *start) {
} }
case DNS_TYPE_SRV: case DNS_TYPE_SRV:
case DNS_TYPE_DNAME:
case DNS_TYPE_SSHFP: case DNS_TYPE_SSHFP:
default: default:
r = dns_packet_read(p, rdlength, &d, NULL); r = dns_packet_read(p, rdlength, &d, NULL);

View File

@ -237,6 +237,7 @@ DnsResourceRecord* dns_resource_record_unref(DnsResourceRecord *rr) {
case DNS_TYPE_PTR: case DNS_TYPE_PTR:
case DNS_TYPE_NS: case DNS_TYPE_NS:
case DNS_TYPE_CNAME: case DNS_TYPE_CNAME:
case DNS_TYPE_DNAME:
free(rr->ptr.name); free(rr->ptr.name);
break; break;
case DNS_TYPE_HINFO: 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_PTR:
case DNS_TYPE_NS: case DNS_TYPE_NS:
case DNS_TYPE_CNAME: case DNS_TYPE_CNAME:
case DNS_TYPE_DNAME:
return dns_name_equal(a->ptr.name, b->ptr.name); return dns_name_equal(a->ptr.name, b->ptr.name);
case DNS_TYPE_HINFO: 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_PTR:
case DNS_TYPE_NS: case DNS_TYPE_NS:
case DNS_TYPE_CNAME: case DNS_TYPE_CNAME:
case DNS_TYPE_DNAME:
s = strjoin(k, " ", rr->ptr.name, NULL); s = strjoin(k, " ", rr->ptr.name, NULL);
if (!s) if (!s)
return -ENOMEM; return -ENOMEM;
@ -591,7 +594,6 @@ static const struct {
{ DNS_TYPE_AXFR, "AXFR" }, { DNS_TYPE_AXFR, "AXFR" },
}; };
const char *dns_type_to_string(uint16_t type) { const char *dns_type_to_string(uint16_t type) {
unsigned i; unsigned i;

View File

@ -95,7 +95,7 @@ struct DnsResourceRecord {
struct { struct {
char *name; char *name;
} ptr, ns, cname; } ptr, ns, cname, dname;
struct { struct {
char *cpu; char *cpu;