* Change default value to 1232 As specified by DNS flag day 2020, good and decent default value avoiding fragmentation issues should be 1232. It is quite likely 1500 would work reliably on local ethernet networks. Value 512 is set implicitly and must be used for all clients, which did not include OPT RR with explicit value they support. Since MR #5368 it should work correctly. Signed-off-by: Petr Menšík <pemensik@redhat.com> * Adapt bufsize test to new default value Check also buffer size smaller than legacy value is not accepted. Signed-off-by: Petr Menšík <pemensik@redhat.com> * Update bufsize documentation Mention also increasing request size is not possible, it can only reduce the accepted size. Signed-off-by: Petr Menšík <pemensik@redhat.com> --------- Signed-off-by: Petr Menšík <pemensik@redhat.com>
52 lines
1.2 KiB
Go
52 lines
1.2 KiB
Go
package bufsize
|
|
|
|
import (
|
|
"strconv"
|
|
|
|
"github.com/coredns/caddy"
|
|
"github.com/coredns/coredns/core/dnsserver"
|
|
"github.com/coredns/coredns/plugin"
|
|
)
|
|
|
|
func init() { plugin.Register("bufsize", setup) }
|
|
|
|
func setup(c *caddy.Controller) error {
|
|
bufsize, err := parse(c)
|
|
if err != nil {
|
|
return plugin.Error("bufsize", err)
|
|
}
|
|
|
|
dnsserver.GetConfig(c).AddPlugin(func(next plugin.Handler) plugin.Handler {
|
|
return Bufsize{Next: next, Size: bufsize}
|
|
})
|
|
|
|
return nil
|
|
}
|
|
|
|
func parse(c *caddy.Controller) (int, error) {
|
|
// value from http://www.dnsflagday.net/2020/
|
|
const defaultBufSize = 1232
|
|
for c.Next() {
|
|
args := c.RemainingArgs()
|
|
switch len(args) {
|
|
case 0:
|
|
// Nothing specified; use defaultBufSize
|
|
return defaultBufSize, nil
|
|
case 1:
|
|
// Specified value is needed to verify
|
|
bufsize, err := strconv.Atoi(args[0])
|
|
if err != nil {
|
|
return -1, plugin.Error("bufsize", c.ArgErr())
|
|
}
|
|
// Follows RFC 6891
|
|
if bufsize < 512 || bufsize > 4096 {
|
|
return -1, plugin.Error("bufsize", c.ArgErr())
|
|
}
|
|
return bufsize, nil
|
|
default:
|
|
// Only 1 argument is acceptable
|
|
return -1, plugin.Error("bufsize", c.ArgErr())
|
|
}
|
|
}
|
|
return -1, plugin.Error("bufsize", c.ArgErr())
|
|
}
|