aboutsummaryrefslogtreecommitdiffstats
path: root/device (follow)
Commit message (Collapse)AuthorAgeFilesLines
* conn: new package that splits out the Bind and Endpoint typesdc/branchDavid Crawshaw2019-12-0812-1223/+379
| | | | | | | The sticky socket code stays in the device package for now, as it reaches deeply into the peer list. Signed-off-by: David Crawshaw <crawshaw@tailscale.com>
* device: SendmsgN mutates the input sockaddrJason A. Donenfeld2019-11-281-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | So we take a new granular lock to prevent concurrent writes from racing. WARNING: DATA RACE Write at 0x00c0011f2740 by goroutine 27: golang.org/x/sys/unix.(*SockaddrInet4).sockaddr() /go/pkg/mod/golang.org/x/sys@v0.0.0-20191105231009-c1f44814a5cd/unix/syscall_linux.go:384 +0x114 golang.org/x/sys/unix.SendmsgN() /go/pkg/mod/golang.org/x/sys@v0.0.0-20191105231009-c1f44814a5cd/unix/syscall_linux.go:1304 +0x288 golang.zx2c4.com/wireguard/device.send4() /go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/conn_linux.go:485 +0x11f golang.zx2c4.com/wireguard/device.(*nativeBind).Send() /go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/conn_linux.go:268 +0x1d6 golang.zx2c4.com/wireguard/device.(*Peer).SendBuffer() /go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/peer.go:151 +0x285 golang.zx2c4.com/wireguard/device.(*Peer).SendHandshakeInitiation() /go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/send.go:163 +0x692 golang.zx2c4.com/wireguard/device.(*Device).RoutineReadFromTUN() /go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/send.go:318 +0x4b8 Previous write at 0x00c0011f2740 by goroutine 386: golang.org/x/sys/unix.(*SockaddrInet4).sockaddr() /go/pkg/mod/golang.org/x/sys@v0.0.0-20191105231009-c1f44814a5cd/unix/syscall_linux.go:384 +0x114 golang.org/x/sys/unix.SendmsgN() /go/pkg/mod/golang.org/x/sys@v0.0.0-20191105231009-c1f44814a5cd/unix/syscall_linux.go:1304 +0x288 golang.zx2c4.com/wireguard/device.send4() /go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/conn_linux.go:485 +0x11f golang.zx2c4.com/wireguard/device.(*nativeBind).Send() /go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/conn_linux.go:268 +0x1d6 golang.zx2c4.com/wireguard/device.(*Peer).SendBuffer() /go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/peer.go:151 +0x285 golang.zx2c4.com/wireguard/device.(*Peer).SendHandshakeInitiation() /go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/send.go:163 +0x692 golang.zx2c4.com/wireguard/device.expiredRetransmitHandshake() /go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/timers.go:110 +0x40c golang.zx2c4.com/wireguard/device.(*Peer).NewTimer.func1() /go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/timers.go:42 +0xd8 Goroutine 27 (running) created at: golang.zx2c4.com/wireguard/device.NewDevice() /go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/device.go:322 +0x5e8 main.main() /go/src/x/main.go:102 +0x58e Goroutine 386 (finished) created at: time.goFunc() /usr/local/go/src/time/sleep.go:168 +0x51 Reported-by: Ben Burkert <ben@benburkert.com>
* constants: recalculate rekey max based on a one minute floodJason A. Donenfeld2019-10-301-1/+1
| | | | Discussed-with: Mathias Hall-Andersen <mathias@hall-andersen.dk>
* global: fix a few typos courtesy of codespellJonathan Tooker2019-10-222-7/+7
| | | | Signed-off-by: Jonathan Tooker <jonathan.tooker@netprotect.com>
* device: allow blackholing socketsJason A. Donenfeld2019-10-212-4/+14
|
* device: remove dead error reporting codeJason A. Donenfeld2019-10-211-4/+1
|
* device: recheck counters while holding write lockJason A. Donenfeld2019-10-171-2/+7
|
* device: test packets between two fake devicesDavid Crawshaw2019-10-161-29/+199
| | | | Signed-off-by: David Crawshaw <crawshaw@tailscale.io>
* version: bump snapshotv0.0.20191012Jason A. Donenfeld2019-10-121-1/+1
|
* uapi: allow preventing creation of new peers when updatingJason A. Donenfeld2019-10-041-1/+17
| | | | | | This enables race-free updates for wg-dynamic and similar tools. Suggested-by: Thomas Gschwantner <tharre3@gmail.com>
* version: bump snapshotv0.0.20190908Jason A. Donenfeld2019-09-081-1/+1
|
* device: getsockname on linux to determine portJason A. Donenfeld2019-08-251-0/+10
| | | | | It turns out Go isn't passing the pointer properly so we wound up with a zero port every time.
* version: bump snapshotv0.0.20190805Jason A. Donenfeld2019-08-051-1/+1
|
* device: drop lock before expiring keysJason A. Donenfeld2019-08-051-4/+11
|
* uapi: skip peers with invalid keysJason A. Donenfeld2019-08-052-4/+16
|
* device: do not crash on nil'd bind in windows bindingJason A. Donenfeld2019-07-181-0/+5
|
* device: immediately rekey all peers after changing device private keyJason A. Donenfeld2019-07-112-0/+25
| | | | Reported-by: Derrick Pallas <derrick@pallas.us>
* device: receive: uniform message for source address checkJason A. Donenfeld2019-07-011-1/+1
|
* device: receive: simplify flush loopJason A. Donenfeld2019-07-011-35/+12
|
* tun: remove TUN prefix from types to reduce stutter elsewhereMatt Layher2019-06-143-15/+14
| | | | Signed-off-by: Matt Layher <mdlayher@gmail.com>
* device: update transfer counters correctlyJason A. Donenfeld2019-06-113-4/+9
| | | | | The rule is to always update them to the full packet size minus UDP/IP encapsulation for all authenticated packet types.
* device: remove redundant return statementsMatt Layher2019-06-041-3/+0
| | | | | | | | | | | More staticcheck fixes: $ staticcheck ./... | grep S1023 device/noise-helpers.go:45:2: redundant return statement (S1023) device/noise-helpers.go:54:2: redundant return statement (S1023) device/noise-helpers.go:64:2: redundant return statement (S1023) Signed-off-by: Matt Layher <mdlayher@gmail.com>
* device: use bytes.Equal for equality check, simplify assertEqualMatt Layher2019-06-041-2/+2
| | | | Signed-off-by: Matt Layher <mdlayher@gmail.com>
* device, ratelimiter: replace uses of time.Now().Sub() with time.Since()Matt Layher2019-06-034-9/+9
| | | | | | | | | | | | | | | | | | | | | | | Simplification found by staticcheck: $ staticcheck ./... | grep S1012 device/cookie.go:90:5: should use time.Since instead of time.Now().Sub (S1012) device/cookie.go:127:5: should use time.Since instead of time.Now().Sub (S1012) device/cookie.go:242:5: should use time.Since instead of time.Now().Sub (S1012) device/noise-protocol.go:304:13: should use time.Since instead of time.Now().Sub (S1012) device/receive.go:82:46: should use time.Since instead of time.Now().Sub (S1012) device/send.go:132:5: should use time.Since instead of time.Now().Sub (S1012) device/send.go:139:5: should use time.Since instead of time.Now().Sub (S1012) device/send.go:235:59: should use time.Since instead of time.Now().Sub (S1012) device/send.go:393:9: should use time.Since instead of time.Now().Sub (S1012) ratelimiter/ratelimiter.go:79:10: should use time.Since instead of time.Now().Sub (S1012) ratelimiter/ratelimiter.go:87:10: should use time.Since instead of time.Now().Sub (S1012) Change applied using: $ find . -type f -name "*.go" -exec sed -i "s/Now().Sub(/Since(/g" {} \; Signed-off-by: Matt Layher <mdlayher@gmail.com>
* device: add SendKeepalivesToPeersWithCurrentKeypair for handoverJason A. Donenfeld2019-05-301-0/+17
|
* device, tun: rearrange code and fix device testsMatt Layher2019-05-292-10/+86
| | | | Signed-off-by: Matt Layher <mdlayher@gmail.com>
* device: darwin actually doesn't need bound interfacesJason A. Donenfeld2019-05-251-44/+0
|
* device: make initiations per second match kernel implementationJason A. Donenfeld2019-05-251-1/+1
|
* device: timers: add jitter on ack failure reinitiationJason A. Donenfeld2019-05-241-1/+1
|
* device: fail to give bind if it doesn't existJason A. Donenfeld2019-05-172-2/+13
|
* version: bump snapshotv0.0.20190517Jason A. Donenfeld2019-05-171-1/+1
|
* global: regroup all importsJason A. Donenfeld2019-05-1415-23/+38
|
* conn: remove scope when sanity checking IP address formatJason A. Donenfeld2019-05-091-1/+7
|
* device: send: check packet length before freeing elementJason A. Donenfeld2019-04-181-3/+3
|
* conn: linux: RTA_MARK has moved to x/sysJason A. Donenfeld2019-04-131-1/+1
|
* version: put version in right placev0.0.20190409Jason A. Donenfeld2019-04-091-1/+1
|
* receive: implement flush semanticsJason A. Donenfeld2019-03-215-93/+119
|
* uapi: remove unhelpful log messagesJason A. Donenfeld2019-03-201-7/+0
|
* uapi: report endpoint errorJason A. Donenfeld2019-03-191-1/+1
|
* uapi: make ipcerror conform to interfaceJason A. Donenfeld2019-03-101-2/+2
|
* receive: squelch tear down errorJason A. Donenfeld2019-03-071-1/+1
|
* tun: import mobile particularitiesJason A. Donenfeld2019-03-043-2/+36
|
* boundif: introduce API for socket bindingJason A. Donenfeld2019-03-048-21/+155
|
* global: begin modularizationJason A. Donenfeld2019-03-0334-0/+6482