summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
315b4ed)
svn path=/trunk/packages/invirt-dns/; revision=2201
invirt-dns (0.0.10) unstable; urgency=low
invirt-dns (0.0.10) unstable; urgency=low
- * Add support for resolving PTR records in the in-addr.arpa zone
+ * Add support for resolving PTR records in the in-addr.arpa zone.
+ * If we're not authoritative for an in-addr.arpa zone, generate a
+ phantom SOA record for the exact request that came in.
- -- Quentin Smith <quentin@mit.edu> Fri, 27 Feb 2009 02:39:25 -0500
+ -- Quentin Smith <quentin@mit.edu> Fri, 27 Feb 2009 02:56:31 -0500
invirt-dns (0.0.9) unstable; urgency=low
invirt-dns (0.0.9) unstable; urgency=low
if name.endswith('.'+domain) and len(domain) > len(best_domain):
best_domain = domain
if best_domain == '':
if name.endswith('.'+domain) and len(domain) > len(best_domain):
best_domain = domain
if best_domain == '':
- return defer.fail(failure.Failure(dns.DomainError(name)))
+ if name.endswith('.in-addr.arpa'):
+ best_domain = name # Act authoritative for the IP address for reverse resolution requests
+ else:
+ return defer.fail(failure.Failure(dns.DomainError(name)))
domain = best_domain
results = []
authority = []
domain = best_domain
results = []
authority = []
if cls == dns.IN:
host = name[:-len(domain)-1]
if cls == dns.IN:
host = name[:-len(domain)-1]
- if not host: # Request for the domain itself.
+ if not host and type != dns.PTR: # Request for the domain itself.
if type in (dns.A, dns.ALL_RECORDS):
record = dns.Record_A(config.dns.nameservers[0].ip, ttl)
results.append(dns.RRHeader(name, dns.A, dns.IN,
if type in (dns.A, dns.ALL_RECORDS):
record = dns.Record_A(config.dns.nameservers[0].ip, ttl)
results.append(dns.RRHeader(name, dns.A, dns.IN,