]> git.ipfire.org Git - thirdparty/wireguard-go.git/commitdiff
device: getsockname on linux to determine port
authorJason A. Donenfeld <Jason@zx2c4.com>
Sun, 25 Aug 2019 18:45:13 +0000 (12:45 -0600)
committerJason A. Donenfeld <Jason@zx2c4.com>
Sun, 25 Aug 2019 18:45:13 +0000 (12:45 -0600)
It turns out Go isn't passing the pointer properly so we wound up with a
zero port every time.

device/conn_linux.go

index ebbbe11b7a29d9c35f54eacf363e382df475885c..f74ad51e9e4156cc5277f642063e1d086e0f0fd0 100644 (file)
@@ -391,6 +391,11 @@ func create4(port uint16) (int, uint16, error) {
                return FD_ERR, 0, err
        }
 
+       sa, err := unix.Getsockname(fd)
+       if err == nil {
+               addr.Port = sa.(*unix.SockaddrInet4).Port
+       }
+
        return fd, uint16(addr.Port), err
 }
 
@@ -450,6 +455,11 @@ func create6(port uint16) (int, uint16, error) {
                return FD_ERR, 0, err
        }
 
+       sa, err := unix.Getsockname(fd)
+       if err == nil {
+               addr.Port = sa.(*unix.SockaddrInet6).Port
+       }
+
        return fd, uint16(addr.Port), err
 }