Jason A. Donenfeld
b6303091fc
memmod: fix import loading function usage
...
Signed-off-by: Jason A. Donenfeld <[email protected] >
2020-11-27 13:13:45 +01:00
Jason A. Donenfeld
da19db415a
version: bump snapshot
2020-11-18 14:24:17 +01:00
Jason A. Donenfeld
52c834c446
mod: bump
...
Signed-off-by: Jason A. Donenfeld <[email protected] >
2020-11-18 14:24:00 +01:00
Jason A. Donenfeld
60b3766b89
wintun: load from filesystem by default
...
We let people loading this from resources opt in via:
go build -tags load_wintun_from_rsrc
Signed-off-by: Jason A. Donenfeld <[email protected] >
2020-11-11 18:51:44 +01:00
Jason A. Donenfeld
82128c47d9
global: switch to using %w instead of %v for Errorf
...
Signed-off-by: Jason A. Donenfeld <[email protected] >
2020-11-07 21:56:32 +01:00
Jason A. Donenfeld
c192b2eeec
mod: update deps
...
Signed-off-by: Jason A. Donenfeld <[email protected] >
2020-11-07 15:22:18 +01:00
Jason A. Donenfeld
5ca1218a5c
device: format a few things
...
Signed-off-by: Jason A. Donenfeld <[email protected] >
2020-11-06 18:01:27 +01:00
Jason A. Donenfeld
c8fe925020
device: remove global for roaming escape hatch
...
Signed-off-by: Jason A. Donenfeld <[email protected] >
2020-10-14 10:45:31 +02:00
Jason A. Donenfeld
0cfa3314ee
replay: divide by bits-per-byte
...
Bits / Bytes-per-Word misses the step of also dividing by Bits-per-Byte,
which we need in order for this to make sense.
Reported-by: Riobard Zhan <[email protected] >
Signed-off-by: Jason A. Donenfeld <[email protected] >
2020-09-07 18:51:49 +02:00
Jason A. Donenfeld
f28a6d244b
device: do not include sticky sockets on android
...
Signed-off-by: Jason A. Donenfeld <[email protected] >
2020-06-07 01:50:20 -06:00
Jason A. Donenfeld
c403da6a39
conn: unbreak boundif on android
...
Another thing never tested ever.
Signed-off-by: Jason A. Donenfeld <[email protected] >
2020-06-07 01:48:28 -06:00
Jason A. Donenfeld
d6de6f3ce6
conn: remove useless comment
...
Signed-off-by: Jason A. Donenfeld <[email protected] >
2020-06-07 01:37:01 -06:00
Jason A. Donenfeld
59e556f24e
conn: fix windows situation with boundif
...
This was evidently never tested before committing.
Signed-off-by: Jason A. Donenfeld <[email protected] >
2020-06-07 01:26:25 -06:00
Jason A. Donenfeld
31faf4c159
replay: account for fqcodel reordering
...
Signed-off-by: Jason A. Donenfeld <[email protected] >
2020-05-19 17:46:35 -06:00
Jason A. Donenfeld
99eb7896be
device: rework padding calculation and don't shadow paddedSize
...
Reported-by: Jayakumar S <[email protected] >
Signed-off-by: Jason A. Donenfeld <[email protected] >
2020-05-18 15:43:22 -06:00
Jason A. Donenfeld
da9d300cf8
main: now that we're upstreamed, relax Linux warning
...
Signed-off-by: Jason A. Donenfeld <[email protected] >
2020-05-02 02:20:47 -06:00
Jason A. Donenfeld
59c9929714
README: specify go 1.13
...
Due to the use of the new errors module, we now require at least 1.13
instead of 1.12.
Signed-off-by: Jason A. Donenfeld <[email protected] >
2020-05-02 02:08:52 -06:00
Jason A. Donenfeld
db0aa39b76
global: update header comments and modules
...
Signed-off-by: Jason A. Donenfeld <[email protected] >
2020-05-02 02:08:26 -06:00
Jason A. Donenfeld
28c4d04304
device: use atomic access for unlocked keypair.next
...
Go's GC semantics might not always guarantee the safety of this, and the
race detector gets upset too, so instead we wrap this all in atomic
accessors.
Reported-by: David Anderson <[email protected] >
Signed-off-by: Jason A. Donenfeld <[email protected] >
2020-05-02 01:56:48 -06:00
Jason A. Donenfeld
ae88e2a2cd
version: bump snapshot
2020-03-20 12:00:53 -06:00
Jason A. Donenfeld
4739708ca4
noise: unify zero checking of ecdh
2020-03-17 23:07:14 -06:00
Jason A. Donenfeld
9cbcff10dd
send: account for zero mtu
...
Don't divide by zero.
2020-02-14 18:53:55 +01:00
Jason A. Donenfeld
6ed56ff2df
device: fix private key removal logic
2020-02-04 22:02:53 +01:00
Jason A. Donenfeld
cb4bb63030
uapi: allow unsetting device private key with /dev/null
2020-02-04 22:02:53 +01:00
Jason A. Donenfeld
05b03c6750
version: bump snapshot
2020-01-21 16:27:19 +01:00
Jason A. Donenfeld
caebdfe9d0
tun: darwin: ignore ENOMEM errors
...
Coauthored-by: Andrej Mihajlov <[email protected] >
2020-01-15 13:39:37 -05:00
Jason A. Donenfeld
4fa2ea6a2d
tun: windows: serialize write calls
2020-01-07 11:40:45 -05:00
Jason A. Donenfeld
89dd065e53
README: update repo urls
2019-12-30 11:53:39 +01:00
Jason A. Donenfeld
ddfad453cf
device: SendmsgN mutates the input sockaddr
...
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/[email protected] /unix/syscall_linux.go:384
+0x114
golang.org/x/sys/unix.SendmsgN()
/go/pkg/mod/golang.org/x/[email protected] /unix/syscall_linux.go:1304
+0x288
golang.zx2c4.com/wireguard/device.send4()
/go/pkg/mod/golang.zx2c4.com/[email protected] /device/conn_linux.go:485
+0x11f
golang.zx2c4.com/wireguard/device.(*nativeBind).Send()
/go/pkg/mod/golang.zx2c4.com/[email protected] /device/conn_linux.go:268
+0x1d6
golang.zx2c4.com/wireguard/device.(*Peer).SendBuffer()
/go/pkg/mod/golang.zx2c4.com/[email protected] /device/peer.go:151
+0x285
golang.zx2c4.com/wireguard/device.(*Peer).SendHandshakeInitiation()
/go/pkg/mod/golang.zx2c4.com/[email protected] /device/send.go:163
+0x692
golang.zx2c4.com/wireguard/device.(*Device).RoutineReadFromTUN()
/go/pkg/mod/golang.zx2c4.com/[email protected] /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/[email protected] /unix/syscall_linux.go:384
+0x114
golang.org/x/sys/unix.SendmsgN()
/go/pkg/mod/golang.org/x/[email protected] /unix/syscall_linux.go:1304
+0x288
golang.zx2c4.com/wireguard/device.send4()
/go/pkg/mod/golang.zx2c4.com/[email protected] /device/conn_linux.go:485
+0x11f
golang.zx2c4.com/wireguard/device.(*nativeBind).Send()
/go/pkg/mod/golang.zx2c4.com/[email protected] /device/conn_linux.go:268
+0x1d6
golang.zx2c4.com/wireguard/device.(*Peer).SendBuffer()
/go/pkg/mod/golang.zx2c4.com/[email protected] /device/peer.go:151
+0x285
golang.zx2c4.com/wireguard/device.(*Peer).SendHandshakeInitiation()
/go/pkg/mod/golang.zx2c4.com/[email protected] /device/send.go:163
+0x692
golang.zx2c4.com/wireguard/device.expiredRetransmitHandshake()
/go/pkg/mod/golang.zx2c4.com/[email protected] /device/timers.go:110
+0x40c
golang.zx2c4.com/wireguard/device.(*Peer).NewTimer.func1()
/go/pkg/mod/golang.zx2c4.com/[email protected] /device/timers.go:42
+0xd8
Goroutine 27 (running) created at:
golang.zx2c4.com/wireguard/device.NewDevice()
/go/pkg/mod/golang.zx2c4.com/[email protected] /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 <[email protected] >
2019-11-28 11:11:13 +01:00
Jason A. Donenfeld
2b242f9393
wintun: manage ring memory manually
...
It's large and Go's garbage collector doesn't deal with it especially
well.
2019-11-22 13:13:55 +01:00
Jason A. Donenfeld
4cdf805b29
constants: recalculate rekey max based on a one minute flood
...
Discussed-with: Mathias Hall-Andersen <[email protected] >
2019-10-30 14:29:32 +01:00
Jason A. Donenfeld
ffffbbcc8a
device: allow blackholing sockets
2019-10-21 13:29:57 +02:00
Jason A. Donenfeld
47b02c618b
device: remove dead error reporting code
2019-10-21 11:46:54 +02:00
Jason A. Donenfeld
fd23c66fcd
namespaceapi: remove tasteless comment
2019-10-21 09:02:29 +02:00
Jason A. Donenfeld
ae492d1b35
device: recheck counters while holding write lock
2019-10-17 15:43:06 +02:00
Jason A. Donenfeld
95fbfccf60
wintun: normalize variable names for their types
2019-10-17 15:30:56 +02:00
Jason A. Donenfeld
f2ea85e9f9
version: bump snapshot
2019-10-12 22:34:10 +02:00
Jason A. Donenfeld
222f0f8000
Makefile: remove v prefix
2019-10-08 16:48:18 +02:00
Jason A. Donenfeld
1f146a5e7a
wintun: expose version
2019-10-08 09:58:58 +02:00
Jason A. Donenfeld
f2501aa6c8
uapi: allow preventing creation of new peers when updating
...
This enables race-free updates for wg-dynamic and similar tools.
Suggested-by: Thomas Gschwantner <[email protected] >
2019-10-04 11:41:02 +02:00
Jason A. Donenfeld
cb8d01f58a
mod: bump versions
2019-10-04 11:41:02 +02:00
Jason A. Donenfeld
01f8ef4e84
winpipe: use x/sys/windows instead of syscall
2019-09-16 23:39:16 -06:00
Jason A. Donenfeld
70f6c42556
wintun: use correct length for security attributes
2019-09-16 19:38:33 -06:00
Jason A. Donenfeld
bb0b2514c0
tun: windows: unify error message format
2019-09-08 13:52:44 -05:00
Jason A. Donenfeld
7c97fdb1e3
version: bump snapshot
2019-09-08 10:56:55 -05:00
Jason A. Donenfeld
84b5a4d83d
main: simplify warnings
2019-09-08 10:56:00 -05:00
Jason A. Donenfeld
4cd06c0925
tun: openbsd: check for interface already being up
...
In some cases, we operate on an already-up interface, or the user brings
up the interface before we start monitoring. For those situations, we
should first check if the interface is already up.
This still technically races between the initial check and the start of
the route loop, but fixing that is a bit ugly and probably not worth it
at the moment.
Reported-by: Theo Buehler <[email protected] >
2019-09-07 00:13:23 -05:00
Jason A. Donenfeld
d12eb91f9a
namespaceapi: AddSIDToBoundaryDescriptor modifies the handle
2019-09-05 21:48:21 -06:00
Jason A. Donenfeld
73d3bd9cd5
wintun: take mutex first always
...
This prevents an ABA deadlock with setupapi's internal locks.
2019-09-01 21:32:28 -06:00
Jason A. Donenfeld
f3dba4c194
wintun: consider abandoned mutexes as released
2019-09-01 21:25:47 -06:00
Jason A. Donenfeld
7937840f96
ipc: windows: use protected prefix
2019-08-31 07:48:42 -06:00
Jason A. Donenfeld
e4b957183c
winpipe: enforce ownership of client connection
2019-08-30 13:21:47 -06:00
Jason A. Donenfeld
950ca2ba8c
wintun: put mutex into private namespace
2019-08-30 11:03:21 -06:00
Jason A. Donenfeld
df2bf34373
namespaceapi: fix mistake
2019-08-30 09:59:36 -06:00
Jason A. Donenfeld
14df9c3e75
wintun: take mutex so that deletion uses the right name
2019-08-30 15:34:17 +02:00
Jason A. Donenfeld
353f0956bc
wintun: move ring constants into module
2019-08-29 13:22:17 -06:00
Jason A. Donenfeld
fa7763c268
wintun: delete all interfaces is not used anymore
2019-08-29 12:22:15 -06:00
Jason A. Donenfeld
d94bae8348
wintun: Wintun->Interface
2019-08-29 12:20:40 -06:00
Jason A. Donenfeld
7689d09336
wintun: keep reference to pool in wintun object
2019-08-29 12:13:16 -06:00
Jason A. Donenfeld
e862131d3c
wintun: simplify rename logic
2019-08-28 19:31:20 -06:00
Jason A. Donenfeld
da28a3e9f3
wintun: give better errors when ndis interface listing fails
2019-08-28 08:39:26 -06:00
Jason A. Donenfeld
3bf3322b2c
wintun: also check for numbered suffix and friendly name
2019-08-28 08:08:07 -06:00
Jason A. Donenfeld
26fb615b11
wintun: cleanup earlier
2019-08-27 11:59:15 -06:00
Jason A. Donenfeld
7fbb24afaa
wintun: rename duplicate adapters instead of ourselves
2019-08-27 11:59:15 -06:00
Jason A. Donenfeld
d9008ac35c
wintun: match suffix numbers
2019-08-26 14:46:43 -06:00
Jason A. Donenfeld
f8198c0428
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.
2019-08-25 12:45:13 -06:00
Jason A. Donenfeld
0c540ad60e
wintun: make description consistent across fields
2019-08-24 12:29:17 +02:00
Jason A. Donenfeld
3cedc22d7b
wintun: try multiple names until one isn't a duplicate
2019-08-22 08:52:59 +02:00
Jason A. Donenfeld
68fea631d8
wintun: use nci.dll directly instead of buggy netshell
2019-08-21 09:16:12 +02:00
Jason A. Donenfeld
ef23100a4f
wintun: set friendly a bit better
...
This is still wrong, but NETSETUPPKEY_Driver_FriendlyName seems a bit
tricky to use.
2019-08-20 16:06:55 +02:00
Jason A. Donenfeld
eb786cd7c1
wintun: also set friendly name after setting interface name
2019-08-19 10:12:50 +02:00
Jason A. Donenfeld
333de75370
wintun: defer requires unique variable
2019-08-19 10:12:50 +02:00
Jason A. Donenfeld
d20459dc69
wintun: set adapter description name
2019-08-19 10:12:50 +02:00
Jason A. Donenfeld
01786286c1
tun: windows: don't spin unless we really need it
2019-08-19 10:12:50 +02:00
Jason A. Donenfeld
b16dba47a7
version: bump snapshot
2019-08-05 19:29:12 +02:00
Jason A. Donenfeld
4be9630ddc
device: drop lock before expiring keys
2019-08-05 17:46:34 +02:00
Jason A. Donenfeld
4e3018a967
uapi: skip peers with invalid keys
2019-08-05 16:57:41 +02:00
Jason A. Donenfeld
b4010123f7
tun: windows: spin for only a millisecond/80
...
Performance stays the same as before.
2019-08-03 19:11:21 +02:00
Jason A. Donenfeld
05ece4d167
wintun: handle error for deadgwdetect
2019-08-02 14:37:09 +02:00
Jason A. Donenfeld
6d78f89557
tun: darwin: do not attempt to close tun.event twice
...
Previously it was possible for this to race. It turns out we really
don't need to set anything to -1 anyway.
2019-08-02 12:24:17 +02:00
Jason A. Donenfeld
a2249449d6
wintun: get interface path properly with cfgmgr
2019-07-23 14:58:46 +02:00
Jason A. Donenfeld
eeeac287ef
tun: windows: style
2019-07-23 11:45:48 +02:00
Jason A. Donenfeld
b5a7cbf069
wintun: simplify resolution of dev node
2019-07-23 11:45:13 +02:00
Jason A. Donenfeld
50cd522cb0
wintun: enable sharing of pnp node
2019-07-22 17:01:27 +02:00
Jason A. Donenfeld
5ba866a5c8
tun: windows: close event handle on shutdown
2019-07-22 09:37:20 +02:00
Jason A. Donenfeld
2f101fedec
ipc: windows: match SDDL of WDK and make monkeyable
2019-07-19 15:34:26 +02:00
Jason A. Donenfeld
3341e2d444
tun: windows: get rid of retry logic
...
Things work fine on Windows 8.
2019-07-19 14:01:34 +02:00
Jason A. Donenfeld
1b550f6583
tun: windows: use specific IOCTL code
2019-07-19 08:30:19 +02:00
Jason A. Donenfeld
7bc0e11831
device: do not crash on nil'd bind in windows binding
2019-07-18 19:34:45 +02:00
Jason A. Donenfeld
31ff9c02fe
tun: windows: open file at startup time
2019-07-18 19:27:27 +02:00
Jason A. Donenfeld
1e39c33ab1
tun: windows: silently drop packet when ring is full
2019-07-18 15:48:34 +02:00
Jason A. Donenfeld
6c50fedd8e
tun: windows: switch to NDIS device object
2019-07-18 12:26:57 +02:00
Jason A. Donenfeld
298d759f3e
wintun: calculate path of NDIS device object symbolic link
2019-07-18 10:25:20 +02:00
Jason A. Donenfeld
9ea9a92117
tun: windows: spin for a bit before falling back to event object
2019-07-18 10:25:20 +02:00
Jason A. Donenfeld
a961aacc9f
device: immediately rekey all peers after changing device private key
...
Reported-by: Derrick Pallas <[email protected] >
2019-07-11 17:37:35 +02:00
Jason A. Donenfeld
b0cf53b078
README: update windows info
2019-07-08 14:52:49 +02:00
Jason A. Donenfeld
5c3d333f10
tun: windows: registration of write buffer no longer required
2019-07-05 14:17:48 +02:00
Jason A. Donenfeld
d8448f8a02
tun: windows: decrease alignment to 4
2019-07-05 07:53:19 +02:00
Jason A. Donenfeld
13abbdf14b
tun: windows: delay initial write
...
Otherwise we provoke Wintun 0.3.
2019-07-04 22:41:42 +02:00
Jason A. Donenfeld
f361e59001
device: receive: uniform message for source address check
2019-07-01 15:24:50 +02:00