diff options
Diffstat (limited to 'src/conn.go')
-rw-r--r-- | src/conn.go | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/conn.go b/src/conn.go new file mode 100644 index 0000000..f6472e9 --- /dev/null +++ b/src/conn.go @@ -0,0 +1,40 @@ +package main + +import ( + "net" +) + +func updateUDPConn(device *Device) error { + var err error + netc := &device.net + netc.mutex.Lock() + + // close existing connection + + if netc.conn != nil { + netc.conn.Close() + } + + // open new connection + + if device.tun.isUp.Get() { + conn, err := net.ListenUDP("udp", netc.addr) + if err == nil { + netc.conn = conn + signalSend(device.signal.newUDPConn) + } + } + + netc.mutex.Unlock() + return err +} + +func closeUDPConn(device *Device) { + netc := &device.net + netc.mutex.Lock() + if netc.conn != nil { + netc.conn.Close() + } + netc.mutex.Unlock() + signalSend(device.signal.newUDPConn) +} |