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:
parent
0f47ed0a05
commit
8ac4e9e1e5
@ -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);
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user