aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2020-06-05 18:36:45 -0600
committerJason A. Donenfeld <Jason@zx2c4.com>2020-06-05 22:06:59 -0600
commit8311f2c761abc0b75f9657a70cb434d6df6844db (patch)
tree654ad0cda295262f4de2b75b93dff1c9575d812c
parentconf: fix typo in error message (diff)
downloadwireguard-windows-8311f2c761abc0b75f9657a70cb434d6df6844db.tar.xz
wireguard-windows-8311f2c761abc0b75f9657a70cb434d6df6844db.zip
conf: add support for search domains inside dns line
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
-rw-r--r--conf/config.go1
-rw-r--r--conf/parser.go6
-rw-r--r--conf/writer.go9
3 files changed, 10 insertions, 6 deletions
diff --git a/conf/config.go b/conf/config.go
index 9f5dbcc1..e1951d47 100644
--- a/conf/config.go
+++ b/conf/config.go
@@ -48,6 +48,7 @@ type Interface struct {
ListenPort uint16
MTU uint16
DNS []net.IP
+ DNSSearch []string
}
type Peer struct {
diff --git a/conf/parser.go b/conf/parser.go
index 5cbf31a7..da21e796 100644
--- a/conf/parser.go
+++ b/conf/parser.go
@@ -277,9 +277,10 @@ func FromWgQuick(s string, name string) (*Config, error) {
for _, address := range addresses {
a := net.ParseIP(address)
if a == nil {
- return nil, &ParseError{l18n.Sprintf("Invalid IP address"), address}
+ conf.Interface.DNSSearch = append(conf.Interface.DNSSearch, address)
+ } else {
+ conf.Interface.DNS = append(conf.Interface.DNS, a)
}
- conf.Interface.DNS = append(conf.Interface.DNS, a)
}
default:
return nil, &ParseError{l18n.Sprintf("Invalid key for [Interface] section"), key}
@@ -366,6 +367,7 @@ func FromUAPI(s string, existingConfig *Config) (*Config, error) {
Interface: Interface{
Addresses: existingConfig.Interface.Addresses,
DNS: existingConfig.Interface.DNS,
+ DNSSearch: existingConfig.Interface.DNSSearch,
MTU: existingConfig.Interface.MTU,
},
}
diff --git a/conf/writer.go b/conf/writer.go
index 748c1d61..ab2810c0 100644
--- a/conf/writer.go
+++ b/conf/writer.go
@@ -28,11 +28,12 @@ func (conf *Config) ToWgQuick() string {
output.WriteString(fmt.Sprintf("Address = %s\n", strings.Join(addrStrings[:], ", ")))
}
- if len(conf.Interface.DNS) > 0 {
- addrStrings := make([]string, len(conf.Interface.DNS))
- for i, address := range conf.Interface.DNS {
- addrStrings[i] = address.String()
+ if len(conf.Interface.DNS) + len(conf.Interface.DNSSearch) > 0 {
+ addrStrings := make([]string, 0, len(conf.Interface.DNS) + len(conf.Interface.DNSSearch))
+ for _, address := range conf.Interface.DNS {
+ addrStrings = append(addrStrings, address.String())
}
+ addrStrings = append(addrStrings, conf.Interface.DNSSearch...)
output.WriteString(fmt.Sprintf("DNS = %s\n", strings.Join(addrStrings[:], ", ")))
}