aboutsummaryrefslogtreecommitdiff
path: root/src/conn.go
diff options
context:
space:
mode:
authorMathias Hall-Andersen <mathias@hall-andersen.dk>2017-08-22 17:22:45 +0200
committerMathias Hall-Andersen <mathias@hall-andersen.dk>2017-08-22 17:22:45 +0200
commit4986cfe78b49173b8a9d86b9ec7e3024d0a3c218 (patch)
tree73444bb682a9ada96f5ea666551141a933cad174 /src/conn.go
parentc6d03ef17f34f7380d95e91a6091a06bce332979 (diff)
downloadwireguard-go-4986cfe78b49173b8a9d86b9ec7e3024d0a3c218.tar.gz
wireguard-go-4986cfe78b49173b8a9d86b9ec7e3024d0a3c218.zip
Add support for fwmark on linux
Diffstat (limited to 'src/conn.go')
-rw-r--r--src/conn.go16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/conn.go b/src/conn.go
index e23b350..7b35829 100644
--- a/src/conn.go
+++ b/src/conn.go
@@ -13,6 +13,7 @@ func updateUDPConn(device *Device) error {
if netc.conn != nil {
netc.conn.Close()
+ netc.conn = nil
}
// open new connection
@@ -26,11 +27,24 @@ func updateUDPConn(device *Device) error {
return err
}
+ // set fwmark
+
+ err = setMark(netc.conn, netc.fwmark)
+ if err != nil {
+ return err
+ }
+
// retrieve port (may have been chosen by kernel)
addr := conn.LocalAddr()
netc.conn = conn
- netc.addr, _ = net.ResolveUDPAddr(addr.Network(), addr.String())
+ netc.addr, _ = net.ResolveUDPAddr(
+ addr.Network(),
+ addr.String(),
+ )
+
+ // notify goroutines
+
signalSend(device.signal.newUDPConn)
}