chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
fcf57f9
)
resolved: properly set TTL in SOA records
author
Lennart Poettering
<lennart@poettering.net>
Wed, 30 Jul 2014 17:34:50 +0000
(19:34 +0200)
committer
Lennart Poettering
<lennart@poettering.net>
Wed, 30 Jul 2014 17:34:50 +0000
(19:34 +0200)
src/resolve/resolved-dns-answer.c
patch
|
blob
|
history
src/resolve/resolved-dns-answer.h
patch
|
blob
|
history
src/resolve/resolved-dns-zone.c
patch
|
blob
|
history
src/resolve/resolved-dns-zone.h
patch
|
blob
|
history
src/resolve/resolved-link.c
patch
|
blob
|
history
diff --git
a/src/resolve/resolved-dns-answer.c
b/src/resolve/resolved-dns-answer.c
index b6883a3abaa057b8c97a557e120a60486a790f1d..7c4ab18b5835f97ce8210976340d4365e9441268 100644
(file)
--- a/
src/resolve/resolved-dns-answer.c
+++ b/
src/resolve/resolved-dns-answer.c
@@
-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;
soa = dns_resource_record_new_full(DNS_CLASS_IN, DNS_TYPE_SOA, name);
if (!soa)
return -ENOMEM;
_cleanup_(dns_resource_record_unrefp) DnsResourceRecord *soa = NULL;
soa = dns_resource_record_new_full(DNS_CLASS_IN, DNS_TYPE_SOA, name);
if (!soa)
return -ENOMEM;
+ soa->ttl = ttl;
+
soa->soa.mname = strdup(name);
if (!soa->soa.mname)
return -ENOMEM;
soa->soa.mname = strdup(name);
if (!soa->soa.mname)
return -ENOMEM;
@@
-116,7
+118,7
@@
int dns_answer_add_soa(DnsAnswer *a, const char *name) {
soa->soa.refresh = 1;
soa->soa.retry = 1;
soa->soa.expire = 1;
soa->soa.refresh = 1;
soa->soa.retry = 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);
}
diff --git
a/src/resolve/resolved-dns-answer.h
b/src/resolve/resolved-dns-answer.h
index 917bfced5f7897f61ec99cd675b9b25b4efbfba8..af3e462ed53affc5631d15744b2179fe3ab042a8 100644
(file)
--- a/
src/resolve/resolved-dns-answer.h
+++ b/
src/resolve/resolved-dns-answer.h
@@
-38,7
+38,7
@@
DnsAnswer *dns_answer_ref(DnsAnswer *a);
DnsAnswer *dns_answer_unref(DnsAnswer *a);
int dns_answer_add(DnsAnswer *a, DnsResourceRecord *rr);
DnsAnswer *dns_answer_unref(DnsAnswer *a);
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_find_soa(DnsAnswer *a, DnsResourceKey *key, DnsResourceRecord **ret);
int dns_answer_contains(DnsAnswer *a, DnsResourceKey *key);
int dns_answer_find_soa(DnsAnswer *a, DnsResourceKey *key, DnsResourceRecord **ret);
diff --git
a/src/resolve/resolved-dns-zone.c
b/src/resolve/resolved-dns-zone.c
index b51f503df8c1c39ebd852e389ba80aef89b62f66..99ea420ff4e7a8a13eae0617a53a48298e0e4d5e 100644
(file)
--- a/
src/resolve/resolved-dns-zone.c
+++ b/
src/resolve/resolved-dns-zone.c
@@
-275,7
+275,7
@@
int dns_zone_lookup(DnsZone *z, DnsQuestion *q, DnsAnswer **ret_answer, DnsAnswe
if (k < 0)
return k;
if (k == 0)
if (k < 0)
return k;
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
r = dns_answer_add(answer, j->rr);
if (r < 0)
else
r = dns_answer_add(answer, j->rr);
if (r < 0)
@@
-292,7
+292,7
@@
int dns_zone_lookup(DnsZone *z, DnsQuestion *q, DnsAnswer **ret_answer, DnsAnswe
}
} else {
if (hashmap_get(z->by_name, DNS_RESOURCE_KEY_NAME(q->keys[i]))) {
}
} else {
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)
return r;
}
if (r < 0)
return r;
}
diff --git
a/src/resolve/resolved-dns-zone.h
b/src/resolve/resolved-dns-zone.h
index 5e7a1f72d01f455a0779dd16afe35fcd8b48fd36..b2af028cfc20ee096d50d914534283a54e09115a 100644
(file)
--- a/
src/resolve/resolved-dns-zone.h
+++ b/
src/resolve/resolved-dns-zone.h
@@
-38,3
+38,6
@@
int dns_zone_put(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);
void dns_zone_remove_rr(DnsZone *z, DnsResourceRecord *rr);
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)
diff --git
a/src/resolve/resolved-link.c
b/src/resolve/resolved-link.c
index cd6e4ba8e6f695e31095c19edfd4100f2fca8b61..a4c23bab06a69b2b7d4b9ac14a84ad38ebb33b6d 100644
(file)
--- a/
src/resolve/resolved-link.c
+++ b/
src/resolve/resolved-link.c
@@
-25,9
+25,6
@@
#include "strv.h"
#include "resolved-link.h"
#include "strv.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);
int link_new(Manager *m, Link **ret, int ifindex) {
static void link_address_add_rrs(LinkAddress *a);
int link_new(Manager *m, Link **ret, int ifindex) {