mirror of
https://github.com/systemd/systemd-stable.git
synced 2024-10-28 20:25:25 +03:00
resolved: properly set TTL in SOA records
This commit is contained in:
parent
fcf57f9cf7
commit
57f5ad3149
@ -97,13 +97,15 @@ int dns_answer_add(DnsAnswer *a, DnsResourceRecord *rr) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int dns_answer_add_soa(DnsAnswer *a, const char *name) {
|
int dns_answer_add_soa(DnsAnswer *a, const char *name, uint32_t ttl) {
|
||||||
_cleanup_(dns_resource_record_unrefp) DnsResourceRecord *soa = NULL;
|
_cleanup_(dns_resource_record_unrefp) DnsResourceRecord *soa = NULL;
|
||||||
|
|
||||||
soa = dns_resource_record_new_full(DNS_CLASS_IN, DNS_TYPE_SOA, name);
|
soa = dns_resource_record_new_full(DNS_CLASS_IN, DNS_TYPE_SOA, name);
|
||||||
if (!soa)
|
if (!soa)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
soa->ttl = ttl;
|
||||||
|
|
||||||
soa->soa.mname = strdup(name);
|
soa->soa.mname = strdup(name);
|
||||||
if (!soa->soa.mname)
|
if (!soa->soa.mname)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
@ -116,7 +118,7 @@ int dns_answer_add_soa(DnsAnswer *a, const char *name) {
|
|||||||
soa->soa.refresh = 1;
|
soa->soa.refresh = 1;
|
||||||
soa->soa.retry = 1;
|
soa->soa.retry = 1;
|
||||||
soa->soa.expire = 1;
|
soa->soa.expire = 1;
|
||||||
soa->soa.minimum = 1;
|
soa->soa.minimum = ttl;
|
||||||
|
|
||||||
return dns_answer_add(a, soa);
|
return dns_answer_add(a, soa);
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,7 @@ DnsAnswer *dns_answer_ref(DnsAnswer *a);
|
|||||||
DnsAnswer *dns_answer_unref(DnsAnswer *a);
|
DnsAnswer *dns_answer_unref(DnsAnswer *a);
|
||||||
|
|
||||||
int dns_answer_add(DnsAnswer *a, DnsResourceRecord *rr);
|
int dns_answer_add(DnsAnswer *a, DnsResourceRecord *rr);
|
||||||
int dns_answer_add_soa(DnsAnswer *a, const char *name);
|
int dns_answer_add_soa(DnsAnswer *a, const char *name, uint32_t ttl);
|
||||||
int dns_answer_contains(DnsAnswer *a, DnsResourceKey *key);
|
int dns_answer_contains(DnsAnswer *a, DnsResourceKey *key);
|
||||||
int dns_answer_find_soa(DnsAnswer *a, DnsResourceKey *key, DnsResourceRecord **ret);
|
int dns_answer_find_soa(DnsAnswer *a, DnsResourceKey *key, DnsResourceRecord **ret);
|
||||||
|
|
||||||
|
@ -275,7 +275,7 @@ int dns_zone_lookup(DnsZone *z, DnsQuestion *q, DnsAnswer **ret_answer, DnsAnswe
|
|||||||
if (k < 0)
|
if (k < 0)
|
||||||
return k;
|
return k;
|
||||||
if (k == 0)
|
if (k == 0)
|
||||||
r = dns_answer_add_soa(soa, DNS_RESOURCE_KEY_NAME(q->keys[i]));
|
r = dns_answer_add_soa(soa, DNS_RESOURCE_KEY_NAME(q->keys[i]), LLMNR_DEFAULT_TTL);
|
||||||
else
|
else
|
||||||
r = dns_answer_add(answer, j->rr);
|
r = dns_answer_add(answer, j->rr);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
@ -292,7 +292,7 @@ int dns_zone_lookup(DnsZone *z, DnsQuestion *q, DnsAnswer **ret_answer, DnsAnswe
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (hashmap_get(z->by_name, DNS_RESOURCE_KEY_NAME(q->keys[i]))) {
|
if (hashmap_get(z->by_name, DNS_RESOURCE_KEY_NAME(q->keys[i]))) {
|
||||||
r = dns_answer_add_soa(soa, DNS_RESOURCE_KEY_NAME(q->keys[i]));
|
r = dns_answer_add_soa(soa, DNS_RESOURCE_KEY_NAME(q->keys[i]), LLMNR_DEFAULT_TTL);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
@ -38,3 +38,6 @@ int dns_zone_put(DnsZone *z, DnsResourceRecord *rr);
|
|||||||
void dns_zone_remove_rr(DnsZone *z, DnsResourceRecord *rr);
|
void dns_zone_remove_rr(DnsZone *z, DnsResourceRecord *rr);
|
||||||
|
|
||||||
int dns_zone_lookup(DnsZone *z, DnsQuestion *q, DnsAnswer **answer, DnsAnswer **soa);
|
int dns_zone_lookup(DnsZone *z, DnsQuestion *q, DnsAnswer **answer, DnsAnswer **soa);
|
||||||
|
|
||||||
|
/* RFC 4795 Section 2.8. suggests a TTL of 30s by default */
|
||||||
|
#define LLMNR_DEFAULT_TTL (30)
|
||||||
|
@ -25,9 +25,6 @@
|
|||||||
#include "strv.h"
|
#include "strv.h"
|
||||||
#include "resolved-link.h"
|
#include "resolved-link.h"
|
||||||
|
|
||||||
/* RFC 4795 Section 2.8. suggests a TTL of 30s by default */
|
|
||||||
#define LLMNR_DEFAULT_TTL (30)
|
|
||||||
|
|
||||||
static void link_address_add_rrs(LinkAddress *a);
|
static void link_address_add_rrs(LinkAddress *a);
|
||||||
|
|
||||||
int link_new(Manager *m, Link **ret, int ifindex) {
|
int link_new(Manager *m, Link **ret, int ifindex) {
|
||||||
|
Loading…
Reference in New Issue
Block a user