1
0
mirror of https://git.zx2c4.com/wireguard-go synced 2024-11-15 01:05:15 +01:00

device: getsockname on linux to determine port

It turns out Go isn't passing the pointer properly so we wound up with a
zero port every time.
This commit is contained in:
Jason A. Donenfeld 2019-08-25 12:45:13 -06:00
parent 0c540ad60e
commit f8198c0428

View File

@ -391,6 +391,11 @@ func create4(port uint16) (int, uint16, error) {
return FD_ERR, 0, err 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 return fd, uint16(addr.Port), err
} }
@ -450,6 +455,11 @@ func create6(port uint16) (int, uint16, error) {
return FD_ERR, 0, err 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 return fd, uint16(addr.Port), err
} }