Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Do SizeAndDo in the server (ScrubWriter) and remove all uses of this from the plugins. Also *always* do it. This is to get into compliance for https://dnsflagday.net/. The pkg/edns0 now exports the EDNS0 options we understand; this is exported to allow plugins add things there. The *rewrite* plugin used this to add custom EDNS0 option codes that the server needs to understand. This also needs a new release of miekg/dns because it triggered a race-condition that was basicly there forever. See: * miekg/dns#857 * miekg/dns#859 Running a test instance and pointing the https://ednscomp.isc.org/ednscomp to it shows the tests are now fixed: ~~~ EDNS Compliance Tester Checking: 'miek.nl' as at 2018-12-01T17:53:15Z miek.nl. @147.75.204.203 (drone.coredns.io.): dns=ok edns=ok edns1=ok edns@512=ok ednsopt=ok edns1opt=ok do=ok ednsflags=ok docookie=ok edns512tcp=ok optlist=ok miek.nl. @2604:1380:2002:a000::1 (drone.coredns.io.): dns=ok edns=ok edns1=ok edns@512=ok ednsopt=ok edns1opt=ok do=ok ednsflags=ok docookie=ok edns512tcp=ok optlist=ok All Ok Codes ok - test passed. ~~~ Signed-off-by: Miek Gieben <miek@miek.nl> Signed-off-by: Miek Gieben <miek@miek.nl>
- Loading branch information
Showing
16 changed files
with
113 additions
and
20 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
package request | ||
|
||
import ( | ||
"github.com/coredns/coredns/plugin/pkg/edns" | ||
|
||
"github.com/miekg/dns" | ||
) | ||
|
||
func supportedOptions(o []dns.EDNS0) []dns.EDNS0 { | ||
var supported = make([]dns.EDNS0, 0, 3) | ||
// For as long as possible try looking up in the map, because that need an Rlock. | ||
for _, opt := range o { | ||
switch code := opt.Option(); code { | ||
case dns.EDNS0NSID: | ||
fallthrough | ||
case dns.EDNS0EXPIRE: | ||
fallthrough | ||
case dns.EDNS0COOKIE: | ||
fallthrough | ||
case dns.EDNS0TCPKEEPALIVE: | ||
fallthrough | ||
case dns.EDNS0PADDING: | ||
supported = append(supported, opt) | ||
default: | ||
if edns.SupportedOption(code) { | ||
supported = append(supported, opt) | ||
} | ||
} | ||
} | ||
return supported | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
package test | ||
|
||
import ( | ||
"testing" | ||
|
||
"github.com/miekg/dns" | ||
) | ||
|
||
func TestEDNS0(t *testing.T) { | ||
corefile := `.:0 { | ||
whoami | ||
} | ||
` | ||
|
||
i, udp, _, err := CoreDNSServerAndPorts(corefile) | ||
if err != nil { | ||
t.Fatalf("Could not get CoreDNS serving instance: %s", err) | ||
} | ||
defer i.Stop() | ||
|
||
m := new(dns.Msg) | ||
m.SetQuestion("example.org.", dns.TypeSOA) | ||
m.SetEdns0(4096, true) | ||
|
||
resp, err := dns.Exchange(m, udp) | ||
if err != nil { | ||
t.Fatalf("Expected to receive reply, but didn't: %v", err) | ||
} | ||
opt := resp.Extra[len(resp.Extra)-1] | ||
if opt.Header().Rrtype != dns.TypeOPT { | ||
t.Errorf("Last RR must be OPT record") | ||
} | ||
} |