mirror of
				https://github.com/coredns/coredns.git
				synced 2025-10-31 10:13:14 -04:00 
			
		
		
		
	map bool -> map struct{} (#2386)
This clear out the remaining map[x]bool usage and moves the bool to an empty struct. Two note worthy other changes: * EnableChaos in the server is now also exported to make it show up in the documentation. * The auto plugin is left as is, because there the boolean is explicitaly set to false to signal 'to-be-deleted' and the key is left as-is. Signed-off-by: Miek Gieben <miek@miek.nl>
This commit is contained in:
		| @@ -70,7 +70,7 @@ func NewServer(addr string, group []*Config) (*Server, error) { | |||||||
| 		if site.registry != nil { | 		if site.registry != nil { | ||||||
| 			// this config is already computed with the chain of plugin | 			// this config is already computed with the chain of plugin | ||||||
| 			// set classChaos in accordance with previously registered plugins | 			// set classChaos in accordance with previously registered plugins | ||||||
| 			for name := range enableChaos { | 			for name := range EnableChaos { | ||||||
| 				if _, ok := site.registry[name]; ok { | 				if _, ok := site.registry[name]; ok { | ||||||
| 					s.classChaos = true | 					s.classChaos = true | ||||||
| 					break | 					break | ||||||
| @@ -97,7 +97,7 @@ func NewServer(addr string, group []*Config) (*Server, error) { | |||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 			// Unblock CH class queries when any of these plugins are loaded. | 			// Unblock CH class queries when any of these plugins are loaded. | ||||||
| 			if _, ok := enableChaos[stack.Name()]; ok { | 			if _, ok := EnableChaos[stack.Name()]; ok { | ||||||
| 				s.classChaos = true | 				s.classChaos = true | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| @@ -381,12 +381,11 @@ type ( | |||||||
| 	loopKey struct{} // loopKey is the context key for counting self loops | 	loopKey struct{} // loopKey is the context key for counting self loops | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // enableChaos is a map with plugin names for which we should open CH class queries as | // EnableChaos is a map with plugin names for which we should open CH class queries as we block these by default. | ||||||
| // we block these by default. | var EnableChaos = map[string]struct{}{ | ||||||
| var enableChaos = map[string]bool{ | 	"chaos":   struct{}{}, | ||||||
| 	"chaos":   true, | 	"forward": struct{}{}, | ||||||
| 	"forward": true, | 	"proxy":   struct{}{}, | ||||||
| 	"proxy":   true, |  | ||||||
| } | } | ||||||
|  |  | ||||||
| // Quiet mode will not show any informative output on initialization. | // Quiet mode will not show any informative output on initialization. | ||||||
|   | |||||||
| @@ -257,14 +257,14 @@ var ( | |||||||
| ) | ) | ||||||
|  |  | ||||||
| // flagsBlacklist removes flags with these names from our flagset. | // flagsBlacklist removes flags with these names from our flagset. | ||||||
| var flagsBlacklist = map[string]bool{ | var flagsBlacklist = map[string]struct{}{ | ||||||
| 	"logtostderr":      true, | 	"logtostderr":      struct{}{}, | ||||||
| 	"alsologtostderr":  true, | 	"alsologtostderr":  struct{}{}, | ||||||
| 	"v":                true, | 	"v":                struct{}{}, | ||||||
| 	"stderrthreshold":  true, | 	"stderrthreshold":  struct{}{}, | ||||||
| 	"vmodule":          true, | 	"vmodule":          struct{}{}, | ||||||
| 	"log_backtrace_at": true, | 	"log_backtrace_at": struct{}{}, | ||||||
| 	"log_dir":          true, | 	"log_dir":          struct{}{}, | ||||||
| } | } | ||||||
|  |  | ||||||
| var flagsToKeep []*flag.Flag | var flagsToKeep []*flag.Flag | ||||||
|   | |||||||
| @@ -129,9 +129,9 @@ func TestKubernetesXFRNotAllowed(t *testing.T) { | |||||||
|  |  | ||||||
| // difference shows what we're missing when comparing two RR slices | // difference shows what we're missing when comparing two RR slices | ||||||
| func difference(testRRs []dns.RR, gotRRs []dns.RR) []dns.RR { | func difference(testRRs []dns.RR, gotRRs []dns.RR) []dns.RR { | ||||||
| 	expectedRRs := map[string]bool{} | 	expectedRRs := map[string]struct{}{} | ||||||
| 	for _, rr := range testRRs { | 	for _, rr := range testRRs { | ||||||
| 		expectedRRs[rr.String()] = true | 		expectedRRs[rr.String()] = struct{}{} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	foundRRs := []dns.RR{} | 	foundRRs := []dns.RR{} | ||||||
|   | |||||||
| @@ -55,7 +55,9 @@ func (l Logger) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) | |||||||
| 		class := response.Classify(tpe) | 		class := response.Classify(tpe) | ||||||
| 		// If we don't set up a class in config, the default "all" will be added | 		// If we don't set up a class in config, the default "all" will be added | ||||||
| 		// and we shouldn't have an empty rule.Class. | 		// and we shouldn't have an empty rule.Class. | ||||||
| 		if rule.Class[response.All] || rule.Class[class] { | 		_, ok := rule.Class[response.All] | ||||||
|  | 		_, ok1 := rule.Class[class] | ||||||
|  | 		if ok || ok1 { | ||||||
| 			rep := replacer.New(ctx, r, rrw, CommonLogEmptyValue) | 			rep := replacer.New(ctx, r, rrw, CommonLogEmptyValue) | ||||||
| 			clog.Infof(rep.Replace(rule.Format)) | 			clog.Infof(rep.Replace(rule.Format)) | ||||||
| 		} | 		} | ||||||
| @@ -72,7 +74,7 @@ func (l Logger) Name() string { return "log" } | |||||||
| // Rule configures the logging plugin. | // Rule configures the logging plugin. | ||||||
| type Rule struct { | type Rule struct { | ||||||
| 	NameScope string | 	NameScope string | ||||||
| 	Class     map[response.Class]bool | 	Class     map[response.Class]struct{} | ||||||
| 	Format    string | 	Format    string | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -21,7 +21,7 @@ func TestLoggedStatus(t *testing.T) { | |||||||
| 	rule := Rule{ | 	rule := Rule{ | ||||||
| 		NameScope: ".", | 		NameScope: ".", | ||||||
| 		Format:    DefaultLogFormat, | 		Format:    DefaultLogFormat, | ||||||
| 		Class:     map[response.Class]bool{response.All: true}, | 		Class:     map[response.Class]struct{}{response.All: struct{}{}}, | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	var f bytes.Buffer | 	var f bytes.Buffer | ||||||
| @@ -53,7 +53,7 @@ func TestLoggedClassDenial(t *testing.T) { | |||||||
| 	rule := Rule{ | 	rule := Rule{ | ||||||
| 		NameScope: ".", | 		NameScope: ".", | ||||||
| 		Format:    DefaultLogFormat, | 		Format:    DefaultLogFormat, | ||||||
| 		Class:     map[response.Class]bool{response.Denial: true}, | 		Class:     map[response.Class]struct{}{response.Denial: struct{}{}}, | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	var f bytes.Buffer | 	var f bytes.Buffer | ||||||
| @@ -82,7 +82,7 @@ func TestLoggedClassError(t *testing.T) { | |||||||
| 	rule := Rule{ | 	rule := Rule{ | ||||||
| 		NameScope: ".", | 		NameScope: ".", | ||||||
| 		Format:    DefaultLogFormat, | 		Format:    DefaultLogFormat, | ||||||
| 		Class:     map[response.Class]bool{response.Error: true}, | 		Class:     map[response.Class]struct{}{response.Error: struct{}{}}, | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	var f bytes.Buffer | 	var f bytes.Buffer | ||||||
|   | |||||||
| @@ -40,13 +40,13 @@ func logParse(c *caddy.Controller) ([]Rule, error) { | |||||||
| 			rules = append(rules, Rule{ | 			rules = append(rules, Rule{ | ||||||
| 				NameScope: ".", | 				NameScope: ".", | ||||||
| 				Format:    DefaultLogFormat, | 				Format:    DefaultLogFormat, | ||||||
| 				Class:     make(map[response.Class]bool), | 				Class:     make(map[response.Class]struct{}), | ||||||
| 			}) | 			}) | ||||||
| 		} else if len(args) == 1 { | 		} else if len(args) == 1 { | ||||||
| 			rules = append(rules, Rule{ | 			rules = append(rules, Rule{ | ||||||
| 				NameScope: dns.Fqdn(args[0]), | 				NameScope: dns.Fqdn(args[0]), | ||||||
| 				Format:    DefaultLogFormat, | 				Format:    DefaultLogFormat, | ||||||
| 				Class:     make(map[response.Class]bool), | 				Class:     make(map[response.Class]struct{}), | ||||||
| 			}) | 			}) | ||||||
| 		} else { | 		} else { | ||||||
| 			// Name scope, and maybe a format specified | 			// Name scope, and maybe a format specified | ||||||
| @@ -64,7 +64,7 @@ func logParse(c *caddy.Controller) ([]Rule, error) { | |||||||
| 			rules = append(rules, Rule{ | 			rules = append(rules, Rule{ | ||||||
| 				NameScope: dns.Fqdn(args[0]), | 				NameScope: dns.Fqdn(args[0]), | ||||||
| 				Format:    format, | 				Format:    format, | ||||||
| 				Class:     make(map[response.Class]bool), | 				Class:     make(map[response.Class]struct{}), | ||||||
| 			}) | 			}) | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| @@ -82,14 +82,14 @@ func logParse(c *caddy.Controller) ([]Rule, error) { | |||||||
| 					if err != nil { | 					if err != nil { | ||||||
| 						return nil, err | 						return nil, err | ||||||
| 					} | 					} | ||||||
| 					rules[len(rules)-1].Class[cls] = true | 					rules[len(rules)-1].Class[cls] = struct{}{} | ||||||
| 				} | 				} | ||||||
| 			default: | 			default: | ||||||
| 				return nil, c.ArgErr() | 				return nil, c.ArgErr() | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 		if len(rules[len(rules)-1].Class) == 0 { | 		if len(rules[len(rules)-1].Class) == 0 { | ||||||
| 			rules[len(rules)-1].Class[response.All] = true | 			rules[len(rules)-1].Class[response.All] = struct{}{} | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|   | |||||||
| @@ -18,42 +18,42 @@ func TestLogParse(t *testing.T) { | |||||||
| 		{`log`, false, []Rule{{ | 		{`log`, false, []Rule{{ | ||||||
| 			NameScope: ".", | 			NameScope: ".", | ||||||
| 			Format:    DefaultLogFormat, | 			Format:    DefaultLogFormat, | ||||||
| 			Class:     map[response.Class]bool{response.All: true}, | 			Class:     map[response.Class]struct{}{response.All: struct{}{}}, | ||||||
| 		}}}, | 		}}}, | ||||||
| 		{`log example.org`, false, []Rule{{ | 		{`log example.org`, false, []Rule{{ | ||||||
| 			NameScope: "example.org.", | 			NameScope: "example.org.", | ||||||
| 			Format:    DefaultLogFormat, | 			Format:    DefaultLogFormat, | ||||||
| 			Class:     map[response.Class]bool{response.All: true}, | 			Class:     map[response.Class]struct{}{response.All: struct{}{}}, | ||||||
| 		}}}, | 		}}}, | ||||||
| 		{`log example.org. {common}`, false, []Rule{{ | 		{`log example.org. {common}`, false, []Rule{{ | ||||||
| 			NameScope: "example.org.", | 			NameScope: "example.org.", | ||||||
| 			Format:    CommonLogFormat, | 			Format:    CommonLogFormat, | ||||||
| 			Class:     map[response.Class]bool{response.All: true}, | 			Class:     map[response.Class]struct{}{response.All: struct{}{}}, | ||||||
| 		}}}, | 		}}}, | ||||||
| 		{`log example.org {combined}`, false, []Rule{{ | 		{`log example.org {combined}`, false, []Rule{{ | ||||||
| 			NameScope: "example.org.", | 			NameScope: "example.org.", | ||||||
| 			Format:    CombinedLogFormat, | 			Format:    CombinedLogFormat, | ||||||
| 			Class:     map[response.Class]bool{response.All: true}, | 			Class:     map[response.Class]struct{}{response.All: struct{}{}}, | ||||||
| 		}}}, | 		}}}, | ||||||
| 		{`log example.org. | 		{`log example.org. | ||||||
| 		log example.net {combined}`, false, []Rule{{ | 		log example.net {combined}`, false, []Rule{{ | ||||||
| 			NameScope: "example.org.", | 			NameScope: "example.org.", | ||||||
| 			Format:    DefaultLogFormat, | 			Format:    DefaultLogFormat, | ||||||
| 			Class:     map[response.Class]bool{response.All: true}, | 			Class:     map[response.Class]struct{}{response.All: struct{}{}}, | ||||||
| 		}, { | 		}, { | ||||||
| 			NameScope: "example.net.", | 			NameScope: "example.net.", | ||||||
| 			Format:    CombinedLogFormat, | 			Format:    CombinedLogFormat, | ||||||
| 			Class:     map[response.Class]bool{response.All: true}, | 			Class:     map[response.Class]struct{}{response.All: struct{}{}}, | ||||||
| 		}}}, | 		}}}, | ||||||
| 		{`log example.org {host} | 		{`log example.org {host} | ||||||
| 			  log example.org {when}`, false, []Rule{{ | 			  log example.org {when}`, false, []Rule{{ | ||||||
| 			NameScope: "example.org.", | 			NameScope: "example.org.", | ||||||
| 			Format:    "{host}", | 			Format:    "{host}", | ||||||
| 			Class:     map[response.Class]bool{response.All: true}, | 			Class:     map[response.Class]struct{}{response.All: struct{}{}}, | ||||||
| 		}, { | 		}, { | ||||||
| 			NameScope: "example.org.", | 			NameScope: "example.org.", | ||||||
| 			Format:    "{when}", | 			Format:    "{when}", | ||||||
| 			Class:     map[response.Class]bool{response.All: true}, | 			Class:     map[response.Class]struct{}{response.All: struct{}{}}, | ||||||
| 		}}}, | 		}}}, | ||||||
|  |  | ||||||
| 		{`log example.org { | 		{`log example.org { | ||||||
| @@ -61,28 +61,28 @@ func TestLogParse(t *testing.T) { | |||||||
| 			}`, false, []Rule{{ | 			}`, false, []Rule{{ | ||||||
| 			NameScope: "example.org.", | 			NameScope: "example.org.", | ||||||
| 			Format:    CommonLogFormat, | 			Format:    CommonLogFormat, | ||||||
| 			Class:     map[response.Class]bool{response.All: true}, | 			Class:     map[response.Class]struct{}{response.All: struct{}{}}, | ||||||
| 		}}}, | 		}}}, | ||||||
| 		{`log example.org { | 		{`log example.org { | ||||||
| 			class denial | 			class denial | ||||||
| 		}`, false, []Rule{{ | 		}`, false, []Rule{{ | ||||||
| 			NameScope: "example.org.", | 			NameScope: "example.org.", | ||||||
| 			Format:    CommonLogFormat, | 			Format:    CommonLogFormat, | ||||||
| 			Class:     map[response.Class]bool{response.Denial: true}, | 			Class:     map[response.Class]struct{}{response.Denial: struct{}{}}, | ||||||
| 		}}}, | 		}}}, | ||||||
| 		{`log { | 		{`log { | ||||||
| 			class denial | 			class denial | ||||||
| 		}`, false, []Rule{{ | 		}`, false, []Rule{{ | ||||||
| 			NameScope: ".", | 			NameScope: ".", | ||||||
| 			Format:    CommonLogFormat, | 			Format:    CommonLogFormat, | ||||||
| 			Class:     map[response.Class]bool{response.Denial: true}, | 			Class:     map[response.Class]struct{}{response.Denial: struct{}{}}, | ||||||
| 		}}}, | 		}}}, | ||||||
| 		{`log { | 		{`log { | ||||||
| 			class denial error | 			class denial error | ||||||
| 		}`, false, []Rule{{ | 		}`, false, []Rule{{ | ||||||
| 			NameScope: ".", | 			NameScope: ".", | ||||||
| 			Format:    CommonLogFormat, | 			Format:    CommonLogFormat, | ||||||
| 			Class:     map[response.Class]bool{response.Denial: true, response.Error: true}, | 			Class:     map[response.Class]struct{}{response.Denial: struct{}{}, response.Error: struct{}{}}, | ||||||
| 		}}}, | 		}}}, | ||||||
| 		{`log { | 		{`log { | ||||||
| 			class denial | 			class denial | ||||||
| @@ -90,7 +90,7 @@ func TestLogParse(t *testing.T) { | |||||||
| 		}`, false, []Rule{{ | 		}`, false, []Rule{{ | ||||||
| 			NameScope: ".", | 			NameScope: ".", | ||||||
| 			Format:    CommonLogFormat, | 			Format:    CommonLogFormat, | ||||||
| 			Class:     map[response.Class]bool{response.Denial: true, response.Error: true}, | 			Class:     map[response.Class]struct{}{response.Denial: struct{}{}, response.Error: struct{}{}}, | ||||||
| 		}}}, | 		}}}, | ||||||
| 		{`log { | 		{`log { | ||||||
| 			class abracadabra | 			class abracadabra | ||||||
|   | |||||||
| @@ -26,7 +26,7 @@ type Metrics struct { | |||||||
| 	srv     *http.Server | 	srv     *http.Server | ||||||
|  |  | ||||||
| 	zoneNames []string | 	zoneNames []string | ||||||
| 	zoneMap   map[string]bool | 	zoneMap   map[string]struct{} | ||||||
| 	zoneMu    sync.RWMutex | 	zoneMu    sync.RWMutex | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -35,7 +35,7 @@ func New(addr string) *Metrics { | |||||||
| 	met := &Metrics{ | 	met := &Metrics{ | ||||||
| 		Addr:    addr, | 		Addr:    addr, | ||||||
| 		Reg:     prometheus.NewRegistry(), | 		Reg:     prometheus.NewRegistry(), | ||||||
| 		zoneMap: make(map[string]bool), | 		zoneMap: make(map[string]struct{}), | ||||||
| 	} | 	} | ||||||
| 	// Add the default collectors | 	// Add the default collectors | ||||||
| 	met.MustRegister(prometheus.NewGoCollector()) | 	met.MustRegister(prometheus.NewGoCollector()) | ||||||
| @@ -69,7 +69,7 @@ func (m *Metrics) MustRegister(c prometheus.Collector) { | |||||||
| // AddZone adds zone z to m. | // AddZone adds zone z to m. | ||||||
| func (m *Metrics) AddZone(z string) { | func (m *Metrics) AddZone(z string) { | ||||||
| 	m.zoneMu.Lock() | 	m.zoneMu.Lock() | ||||||
| 	m.zoneMap[z] = true | 	m.zoneMap[z] = struct{}{} | ||||||
| 	m.zoneNames = keys(m.zoneMap) | 	m.zoneNames = keys(m.zoneMap) | ||||||
| 	m.zoneMu.Unlock() | 	m.zoneMu.Unlock() | ||||||
| } | } | ||||||
| @@ -140,7 +140,7 @@ func (m *Metrics) OnFinalShutdown() error { | |||||||
| 	return m.stopServer() | 	return m.stopServer() | ||||||
| } | } | ||||||
|  |  | ||||||
| func keys(m map[string]bool) []string { | func keys(m map[string]struct{}) []string { | ||||||
| 	sx := []string{} | 	sx := []string{} | ||||||
| 	for k := range m { | 	for k := range m { | ||||||
| 		sx = append(sx, k) | 		sx = append(sx, k) | ||||||
|   | |||||||
| @@ -50,25 +50,25 @@ func WithServer(ctx context.Context) string { | |||||||
| 	return srv.(string) | 	return srv.(string) | ||||||
| } | } | ||||||
|  |  | ||||||
| var monitorType = map[uint16]bool{ | var monitorType = map[uint16]struct{}{ | ||||||
| 	dns.TypeAAAA:   true, | 	dns.TypeAAAA:   struct{}{}, | ||||||
| 	dns.TypeA:      true, | 	dns.TypeA:      struct{}{}, | ||||||
| 	dns.TypeCNAME:  true, | 	dns.TypeCNAME:  struct{}{}, | ||||||
| 	dns.TypeDNSKEY: true, | 	dns.TypeDNSKEY: struct{}{}, | ||||||
| 	dns.TypeDS:     true, | 	dns.TypeDS:     struct{}{}, | ||||||
| 	dns.TypeMX:     true, | 	dns.TypeMX:     struct{}{}, | ||||||
| 	dns.TypeNSEC3:  true, | 	dns.TypeNSEC3:  struct{}{}, | ||||||
| 	dns.TypeNSEC:   true, | 	dns.TypeNSEC:   struct{}{}, | ||||||
| 	dns.TypeNS:     true, | 	dns.TypeNS:     struct{}{}, | ||||||
| 	dns.TypePTR:    true, | 	dns.TypePTR:    struct{}{}, | ||||||
| 	dns.TypeRRSIG:  true, | 	dns.TypeRRSIG:  struct{}{}, | ||||||
| 	dns.TypeSOA:    true, | 	dns.TypeSOA:    struct{}{}, | ||||||
| 	dns.TypeSRV:    true, | 	dns.TypeSRV:    struct{}{}, | ||||||
| 	dns.TypeTXT:    true, | 	dns.TypeTXT:    struct{}{}, | ||||||
| 	// Meta Qtypes | 	// Meta Qtypes | ||||||
| 	dns.TypeIXFR: true, | 	dns.TypeIXFR: struct{}{}, | ||||||
| 	dns.TypeAXFR: true, | 	dns.TypeAXFR: struct{}{}, | ||||||
| 	dns.TypeANY:  true, | 	dns.TypeANY:  struct{}{}, | ||||||
| } | } | ||||||
|  |  | ||||||
| const other = "other" | const other = "other" | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user