/* Must hold device and net lock
*/
-func unsafeCloseUDPListener(device *Device) error {
+func unsafeCloseBind(device *Device) error {
var err error
netc := &device.net
if netc.bind != nil {
return err
}
-// must inform all listeners
-func UpdateUDPListener(device *Device) error {
+func updateBind(device *Device) error {
device.mutex.Lock()
defer device.mutex.Unlock()
// close existing sockets
- if err := unsafeCloseUDPListener(device); err != nil {
+ if err := unsafeCloseBind(device); err != nil {
return err
}
return nil
}
-func CloseUDPListener(device *Device) error {
+func closeBind(device *Device) error {
device.mutex.Lock()
device.net.mutex.Lock()
- err := unsafeCloseUDPListener(device)
+ err := unsafeCloseBind(device)
device.net.mutex.Unlock()
device.mutex.Unlock()
return err
device.log.Info.Println("Closing device")
device.RemoveAllPeers()
close(device.signal.stop)
- CloseUDPListener(device)
+ closeBind(device)
device.tun.device.Close()
}
if event&TUNEventUp != 0 {
if !device.tun.isUp.Get() {
+ // begin listening for incomming datagrams
logInfo.Println("Interface set up")
device.tun.isUp.Set(true)
- UpdateUDPListener(device)
+ updateBind(device)
}
}
if event&TUNEventDown != 0 {
if device.tun.isUp.Get() {
+ // stop listening for incomming datagrams
logInfo.Println("Interface set down")
device.tun.isUp.Set(false)
- CloseUDPListener(device)
+ closeBind(device)
}
}
}
return &IPCError{Code: ipcErrorInvalid}
}
device.net.port = uint16(port)
- if err := UpdateUDPListener(device); err != nil {
+ if err := updateBind(device); err != nil {
logError.Println("Failed to set listen_port:", err)
return &IPCError{Code: ipcErrorPortInUse}
}