Skip to content

Commit

Permalink
Pull request: 1868 fix rdns
Browse files Browse the repository at this point in the history
Merge in DNS/adguard-home from 1868-rdns-ipv6 to master

Updates #2943.
Updates #2704.

Squashed commit of the following:

commit 53d67ec
Author: Eugene Burkov <[email protected]>
Date:   Tue Apr 13 16:18:33 2021 +0300

    all: imp code, docs

commit 2bc1594
Author: Eugene Burkov <[email protected]>
Date:   Tue Apr 13 16:09:08 2021 +0300

    all: imp code
  • Loading branch information
EugeneOne1 committed Apr 13, 2021
1 parent 773f02c commit d7b2d63
Show file tree
Hide file tree
Showing 7 changed files with 85 additions and 8 deletions.
1 change: 1 addition & 0 deletions internal/aghnet/subnetdetector.go
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ func NewSubnetDetector() (snd *SubnetDetector, err error) {
"::1/128",
"fe80::/10",
"2001:db8::/32",
"fd00::/8",
}

snd = &SubnetDetector{
Expand Down
8 changes: 8 additions & 0 deletions internal/aghnet/subnetdetector_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,14 @@ func TestSubnetDetector_DetectLocallyServedNetwork(t *testing.T) {
name: "linked-scoped_unicast",
ip: net.ParseIP("fe80::"),
want: true,
}, {
name: "locally_assigned",
ip: net.ParseIP("fd00::1"),
want: true,
}, {
name: "not_locally_assigned",
ip: net.ParseIP("fc00::1"),
want: false,
}}

for _, tc := range testCases {
Expand Down
2 changes: 1 addition & 1 deletion internal/dnsforward/clientid_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import (
// testTLSConn is a tlsConn for tests.
type testTLSConn struct {
// Conn is embedded here simply to make testTLSConn a net.Conn without
// acctually implementing all methods.
// actually implementing all methods.
net.Conn

serverName string
Expand Down
4 changes: 2 additions & 2 deletions internal/dnsforward/stats_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import (
// testQueryLog is a simple querylog.QueryLog implementation for tests.
type testQueryLog struct {
// QueryLog is embedded here simply to make testQueryLog
// a querylog.QueryLog without acctually implementing all methods.
// a querylog.QueryLog without actually implementing all methods.
querylog.QueryLog

lastParams querylog.AddParams
Expand All @@ -32,7 +32,7 @@ func (l *testQueryLog) Add(p querylog.AddParams) {
// testStats is a simple stats.Stats implementation for tests.
type testStats struct {
// Stats is embedded here simply to make testStats a stats.Stats without
// acctually implementing all methods.
// actually implementing all methods.
stats.Stats

lastEntry stats.Entry
Expand Down
60 changes: 60 additions & 0 deletions internal/dnsforward/util_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package dnsforward

import (
"net"
"testing"

"github.com/stretchr/testify/assert"
)

// fakeAddr is a mock implementation of net.Addr interface to simplify testing.
type fakeAddr struct {
// Addr is embedded here simply to make fakeAddr a net.Addr without
// actually implementing all methods.
net.Addr
}

func TestIPFromAddr(t *testing.T) {
supIPv4 := net.IP{1, 2, 3, 4}
supIPv6 := net.ParseIP("2a00:1450:400c:c06::93")

testCases := []struct {
name string
addr net.Addr
want net.IP
}{{
name: "ipv4_tcp",
addr: &net.TCPAddr{
IP: supIPv4,
},
want: supIPv4,
}, {
name: "ipv6_tcp",
addr: &net.TCPAddr{
IP: supIPv6,
},
want: supIPv6,
}, {
name: "ipv4_udp",
addr: &net.UDPAddr{
IP: supIPv4,
},
want: supIPv4,
}, {
name: "ipv6_udp",
addr: &net.UDPAddr{
IP: supIPv6,
},
want: supIPv6,
}, {
name: "non-ip_addr",
addr: &fakeAddr{},
want: nil,
}}

for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
assert.Equal(t, tc.want, IPFromAddr(tc.addr))
})
}
}
10 changes: 6 additions & 4 deletions internal/home/rdns.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,10 +95,12 @@ func (r *RDNS) workerLoop() {
continue
}

if host != "" {
// Don't handle any errors since AddHost doesn't return non-nil
// errors for now.
_, _ = r.clients.AddHost(ip.String(), host, ClientSourceRDNS)
if host == "" {
continue
}

// Don't handle any errors since AddHost doesn't return non-nil
// errors for now.
_, _ = r.clients.AddHost(ip.String(), host, ClientSourceRDNS)
}
}
8 changes: 7 additions & 1 deletion internal/home/rdns_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,8 @@ func TestRDNS_WorkerLoop(t *testing.T) {

locUpstream := &aghtest.TestUpstream{
Reverse: map[string][]string{
"192.168.1.1": {"local.domain"},
"192.168.1.1": {"local.domain"},
"2a00:1450:400c:c06::93": {"ipv6.domain"},
},
}
errUpstream := &aghtest.TestErrUpstream{
Expand All @@ -157,6 +158,11 @@ func TestRDNS_WorkerLoop(t *testing.T) {
wantLog: `rdns: resolving "192.168.1.2": errupstream: 1234`,
name: "resolve_error",
cliIP: net.IP{192, 168, 1, 2},
}, {
ups: locUpstream,
wantLog: "",
name: "ipv6_good",
cliIP: net.ParseIP("2a00:1450:400c:c06::93"),
}}

for _, tc := range testCases {
Expand Down

0 comments on commit d7b2d63

Please sign in to comment.