coredns/plugin/bufsize/setup.go
Petr Menšík 52f0348312
Change default value to 1232 (#6183)
* 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>
2023-07-10 07:49:52 -07:00

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())
}