diff options
author | Mathias Hall-Andersen <mathias@hall-andersen.dk> | 2017-07-27 23:46:01 +0200 |
---|---|---|
committer | Mathias Hall-Andersen <mathias@hall-andersen.dk> | 2017-07-27 23:46:01 +0200 |
commit | 92135131a7e87b9e078d32f4128bef1698132936 (patch) | |
tree | ae9dfe5243aa22a2f26e3b7baf346f7322551611 /src/config.go | |
parent | fb3fa4f9158458654281129f44f354a65741aef3 (diff) | |
parent | c3d9ae402d431b7697686dbaf021f879c8ccab36 (diff) |
Merge branch 'master' of git.zx2c4.com:wireguard-go
Diffstat (limited to 'src/config.go')
-rw-r--r-- | src/config.go | 38 |
1 files changed, 16 insertions, 22 deletions
diff --git a/src/config.go b/src/config.go index 509da58..9751a18 100644 --- a/src/config.go +++ b/src/config.go @@ -2,7 +2,6 @@ package main import ( "bufio" - "errors" "fmt" "io" "net" @@ -110,12 +109,10 @@ func ipcSetOperation(device *Device, socket *bufio.ReadWriter) *IPCError { /* interface configuration */ case "private_key": + var sk NoisePrivateKey if value == "" { - device.mutex.Lock() - device.privateKey = NoisePrivateKey{} - device.mutex.Unlock() + device.SetPrivateKey(sk) } else { - var sk NoisePrivateKey err := sk.FromHex(value) if err != nil { logError.Println("Failed to set private_key:", err) @@ -125,16 +122,21 @@ func ipcSetOperation(device *Device, socket *bufio.ReadWriter) *IPCError { } case "listen_port": - var port int - _, err := fmt.Sscanf(value, "%d", &port) - if err != nil || port > (1<<16) || port < 0 { + port, err := strconv.ParseUint(value, 10, 16) + if err != nil { logError.Println("Failed to set listen_port:", err) return &IPCError{Code: ipcErrorInvalidValue} } - device.net.mutex.Lock() - device.net.addr.Port = port - device.net.conn, err = net.ListenUDP("udp", device.net.addr) - device.net.mutex.Unlock() + netc := &device.net + netc.mutex.Lock() + if netc.addr.Port != int(port) { + if netc.conn != nil { + netc.conn.Close() + } + netc.addr.Port = int(port) + netc.conn, err = net.ListenUDP("udp", netc.addr) + } + netc.mutex.Unlock() if err != nil { logError.Println("Failed to create UDP listener:", err) return &IPCError{Code: ipcErrorInvalidValue} @@ -151,15 +153,10 @@ func ipcSetOperation(device *Device, socket *bufio.ReadWriter) *IPCError { return &IPCError{Code: ipcErrorInvalidValue} } device.mutex.RLock() - found, ok := device.peers[pubKey] + peer, _ := device.peers[pubKey] device.mutex.RUnlock() - if ok { - peer = found - } else { - peer = device.NewPeer(pubKey) - } if peer == nil { - panic(errors.New("bug: failed to find / create peer")) + peer = device.NewPeer(pubKey) } case "replace_peers": @@ -182,9 +179,7 @@ func ipcSetOperation(device *Device, socket *bufio.ReadWriter) *IPCError { switch key { case "remove": - peer.mutex.Lock() device.RemovePeer(peer.handshake.remoteStatic) - peer.mutex.Unlock() logDebug.Println("Removing", peer.String()) peer = nil @@ -235,7 +230,6 @@ func ipcSetOperation(device *Device, socket *bufio.ReadWriter) *IPCError { return &IPCError{Code: ipcErrorInvalidValue} } ones, _ := network.Mask.Size() - logError.Println(network, ones, network.IP) device.routingTable.Insert(network.IP, uint(ones), peer) default: |