mirror of
				https://github.com/coredns/coredns.git
				synced 2025-10-31 10:13:14 -04:00 
			
		
		
		
	Add bufsize plugin for preparing the DNS Flag Day and avoiding IP fragmentation (#3401)
* add bufsize plugin Signed-off-by: ykhr53 <yukihira.lab@gmail.com> * add docstring and comment Signed-off-by: ykhr53 <yukihira.lab@gmail.com> * delete stdout messages when get an error Signed-off-by: ykhr53 <yukihira.lab@gmail.com> * change to context.Background from TODO Signed-off-by: ykhr53 <yukihira.lab@gmail.com> * define default bufsize as defaultBufSize constant Signed-off-by: ykhr53 <yukihira.lab@gmail.com> * fix some comments Signed-off-by: ykhr53 <yukihira.lab@gmail.com> * function name change: parse Signed-off-by: ykhr53 <yukihira.lab@gmail.com> * function name change: parse Signed-off-by: ykhr53 <yukihira.lab@gmail.com>
This commit is contained in:
		
				
					committed by
					
						 Miek Gieben
						Miek Gieben
					
				
			
			
				
	
			
			
			
						parent
						
							113783ed91
						
					
				
				
					commit
					e23a34abb4
				
			
							
								
								
									
										52
									
								
								plugin/bufsize/setup.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								plugin/bufsize/setup.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,52 @@ | ||||
| package bufsize | ||||
|  | ||||
| import ( | ||||
| 	"strconv" | ||||
|  | ||||
| 	"github.com/coredns/coredns/core/dnsserver" | ||||
| 	"github.com/coredns/coredns/plugin" | ||||
|  | ||||
| 	"github.com/caddyserver/caddy" | ||||
| ) | ||||
|  | ||||
| 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) { | ||||
| 	const defaultBufSize = 512 | ||||
| 	for c.Next() { | ||||
| 		args := c.RemainingArgs() | ||||
| 		switch len(args) { | ||||
| 		case 0: | ||||
| 			// Nothing specified; use 512 as default | ||||
| 			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()) | ||||
| } | ||||
		Reference in New Issue
	
	Block a user