}
func (r *registry) defaultDomain() *machines.Domain {
+ r.store.mu.RLock()
+ defer r.store.mu.RUnlock()
+
if r.defDomain != "" {
if d, ok := r.store.Domains[r.defDomain]; ok && d != nil {
return d
}
func (r *registry) domainFromQuestion(ques dns.Question) *machines.Domain {
+ r.store.mu.RLock()
+ defer r.store.mu.RUnlock()
+
qname := strings.ToLower(strings.TrimSuffix(ques.Name, "."))
for _, domain := range r.store.Domains {
if qname == domain.Name || strings.HasSuffix(qname, "."+domain.Name) {
if defDomain := r.defaultDomain(); defDomain != nil {
if qname == defDomain.ReverseDNSZoneIPv4 || qname == defDomain.ReverseDNSZoneIPv6 {
- return r.lookupApex(ques, defDomain)
+ code, rrs := r.lookupApex(ques, defDomain)
+ r.log.V(1).Infof("lookupApex(%s): %+v", qname, rrs)
+ return code, rrs
}
}
+ r.store.mu.RLock()
+ defer r.store.mu.RUnlock()
+
for _, domain := range r.store.Domains {
myfqdn := fmt.Sprintf("%s.%s", myHostname, domain.Name)
return r.lookupReverseIPv6(fqdn)
}
+ r.store.mu.RLock()
+ defer r.store.mu.RUnlock()
+
var basename, domainName string
var domain *machines.Domain
}
func (r *registry) lookupHostLastSeenIface(basename string) (*Result, error) {
+ r.store.mu.RLock()
+ defer r.store.mu.RUnlock()
+
hostID, ok := r.store.HostNames[basename]
if !ok {
// host not found
return nil, nil
}
+ r.log.V(1).Infof("lookupHostLastSeenIface(%s) result: domain %s, host %s, iface %s",
+ basename, domain.Name, host.Name, iface.Name)
+
return &Result{
domain: domain,
host: host,
}
func (r *registry) lookupHostWithIface(basename string) (*Result, error) {
+ r.store.mu.RLock()
+ defer r.store.mu.RUnlock()
+
ifaceID, ok := r.store.HostInterfaceNames[basename]
if !ok {
// host not found
return nil, nil
}
+ r.log.V(1).Infof("lookupHostWithIface(%s) result: domain %s, host %s, iface %s",
+ basename, domain.Name, host.Name, iface.Name)
+
return &Result{
domain: domain,
host: host,
return nil, fmt.Errorf("failed to parse IP")
}
+ r.store.mu.RLock()
+ defer r.store.mu.RUnlock()
+
var domain *machines.Domain
for _, d := range r.store.Domains {
if !ip.Mask(d.IPv4PrefixLength.IPMask()).Equal(d.IPv4Address.AsIP()) {
}
if domain != nil && host != nil && iface != nil {
+ r.log.V(1).Infof("lookupReverseIPv4(%s) result: domain %s, host %s, iface %s",
+ ptrName, domain.Name, host.Name, iface.Name)
return &Result{
domain: domain,
host: host,
return nil, fmt.Errorf("failed to parse IP")
}
- r.log.V(1).Debugf("processing PTR lookup for IP %s", ip.String())
+ r.log.V(3).Debugf("processing PTR lookup for IP %s", ip.String())
+
+ r.store.mu.RLock()
+ defer r.store.mu.RUnlock()
var domain *machines.Domain
for _, d := range r.store.Domains {
}
routerAddress := r.store.Addrs.IPv6[domain.IPv6Address.String()].Address
- r.log.Debugf("routerAddress = %s", routerAddress)
+ r.log.V(3).Debugf("routerAddress = %s", routerAddress)
if ip.Equal(routerAddress.AsIP()) {
return &Result{
domain: domain,
}
if domain != nil && host != nil && iface != nil {
+ r.log.V(1).Infof("lookupReverseIPv6(%s) result: domain %s, host %s, iface %s",
+ ptrName, domain.Name, host.Name, iface.Name)
return &Result{
domain: domain,
host: host,
qname := strings.TrimSuffix(ques.Name, ".")
defDomain := r.defaultDomain()
- r.log.V(2).Debugf("lookupApex(%s)", ques.Name)
-
switch ques.Qtype {
case dns.TypeSOA:
return dns.RcodeSuccess, []dns.RR{