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 and remove all uses of this from the plugins and do it in the server in the ScrubWiriter. 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 here. Note I can't test it because of: miekg/dns#857 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>
- Loading branch information
Showing
14 changed files
with
104 additions
and
19 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
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.Supported.Option(opt) { | ||
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") | ||
} | ||
} |