coredns/plugin/bind/setup.go
Francois Tur 76455c6a0d Plugin/BIND - extend the syntax to allow multiple addresses (#1512)
* Extend bind to allow multiple addresses. UTs added. Changes the log for server starting, adding address when available

* update readme for bind

* fixes after review

* minor fix on readme

* accept multiple BIND directives in blocserver, consolidate the addresses

* fixes after review - format logging server address, variable names
2018-02-14 20:19:32 +01:00

32 lines
714 B
Go

package bind
import (
"fmt"
"net"
"github.com/coredns/coredns/core/dnsserver"
"github.com/coredns/coredns/plugin"
"github.com/mholt/caddy"
)
func setupBind(c *caddy.Controller) error {
config := dnsserver.GetConfig(c)
// addresses will be consolidated over all BIND directives available in that BlocServer
all := []string{}
for c.Next() {
addrs := c.RemainingArgs()
if len(addrs) == 0 {
return plugin.Error("bind", fmt.Errorf("at least one address is expected"))
}
for _, addr := range addrs {
if net.ParseIP(addr) == nil {
return plugin.Error("bind", fmt.Errorf("not a valid IP address: %s", addr))
}
}
all = append(all, addrs...)
}
config.ListenHosts = all
return nil
}