mirror of
				https://github.com/coredns/coredns.git
				synced 2025-10-30 17:53:21 -04:00 
			
		
		
		
	* 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>
		
			
				
	
	
		
			53 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			53 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())
 | |
| }
 |