Mathias Hall-Andersen
c1dfc848c4
Added architecture illustration.
2020-06-14 21:57:35 +02:00
Mathias Hall-Andersen
16ede0f37d
Enable wireguard-rs to build on stable.
...
WireGuard Rust targets the latest nightly compiler,
primarily for security and speed reasons.
The recommended way to build WireGuard Rust is still with latest nightly.
2020-05-22 18:01:15 +02:00
Mathias Hall-Andersen
16f21989b4
Elimited Daemonize dependency
2020-05-17 22:07:59 +02:00
Mathias Hall-Andersen
8d53b0f5c1
Remove "list_peers" and "lookup_peer".
2020-05-13 23:23:17 +02:00
Mathias Hall-Andersen
ff9b7e3ed2
Bumped dependencies
2020-05-13 23:22:49 +02:00
Mathias Hall-Andersen
6c386146a7
Refactoring timer code:
...
- Remove the Events struct
- Implement Callbacks on the PeerInner, elimiting an Arc.
2020-05-10 21:23:51 +02:00
Mathias Hall-Andersen
985fd088f8
Added basic readme.
2020-03-29 23:07:00 +02:00
Mathias Hall-Andersen
ded348d586
Added checks for zero shared-secret
...
To mirror the behavior from the kernel module,
as per private correspondence with Jason.
2020-03-29 23:07:00 +02:00
Mathias Hall-Andersen
12a7b371d4
Restructuring and dependency version bump.
2020-03-29 18:21:48 +02:00
Mathias Hall-Andersen
c4d2ad7a78
Merge branch 'tests'
2020-03-16 12:44:48 +01:00
Mathias Hall-Andersen
f2ee976d06
Upgraded treebitmap dependency
2020-03-16 12:41:59 +01:00
Mathias Hall-Andersen
981d553852
Added the netns test
2020-02-29 13:30:20 +01:00
Mathias Hall-Andersen
626b3b2314
Additional in-order queue test for router
2020-02-26 23:01:18 +01:00
Mathias Hall-Andersen
8de2305cc7
Fixed unit tests
2020-02-21 00:31:00 +01:00
Mathias Hall-Andersen
db02609334
More comprehensive unit tests for router
2020-02-20 13:21:37 +01:00
Mathias Hall-Andersen
ead75828cd
Simplified router code
2020-02-16 20:25:31 +01:00
Mathias Hall-Andersen
1ebbc51126
Fixed EINVAL on read4/6 from invalid namelen
2020-02-16 13:24:23 +01:00
Mathias Hall-Andersen
5e6edb280e
Bumped crate versions.
2020-02-12 21:38:25 +01:00
Mathias Hall-Andersen
dcd567c08f
Squashed commit of the following:
...
commit 1e26a0bef44e65023a97a16ecf3b123e688d19f7
Author: Mathias Hall-Andersen <mathias@hall-andersen.dk >
Date: Sat Feb 1 14:36:50 2020 +0100
Initial version of sticky sockets for Linux
commit 605cc656ad235d09ba6cd12d03dee2c5e0a9a80a
Author: Mathias Hall-Andersen <mathias@hall-andersen.dk >
Date: Thu Jan 30 14:57:00 2020 +0100
Clear src when sendmsg fails with EINVAL
commit dffd2b228af70f681e2a161642bbdaa348419bf3
Author: Mathias Hall-Andersen <mathias@hall-andersen.dk >
Date: Sun Jan 26 14:01:28 2020 +0100
Fix typoes
commit 2015663706fbe15ed1ac443a31de86b3e6c643c7
Author: Mathias Hall-Andersen <mathias@hall-andersen.dk >
Date: Sun Jan 26 13:51:59 2020 +0100
Restructure of public key -> peer state
Restructured the mapping of public keys to peer state in the project.
The handshake device is now generic over an opaque type,
which enables it to be the sole place where public keys are mapped to
the peer states.
This gets rid of the "peer" map in the WireGuard devices
and avoids having to include the public key in the handshake peer state.
commit bbcfaad4bcc5cf16bacdef0cefe7d29ba1519a23
Author: Mathias Hall-Andersen <mathias@hall-andersen.dk >
Date: Fri Jan 10 21:10:27 2020 +0100
Fixed bind6 also binding on IPv4
commit acbca236b70598c20c24de474690bcad883241d4
Author: Mathias Hall-Andersen <mathias@hall-andersen.dk >
Date: Thu Jan 9 11:24:13 2020 +0100
Work on sticky sockets
2020-02-01 14:39:19 +01:00
Mathias Hall-Andersen
d4f5d5b723
Fixed typo in under load code
2019-12-27 18:01:11 +01:00
Mathias Hall-Andersen
956c3f02d4
Remove unused under_load code
2019-12-26 23:45:34 +01:00
Mathias Hall-Andersen
bb0a8acea3
Make under_load global for WireGuard device
2019-12-26 22:55:33 +01:00
Mathias Hall-Andersen
aabefa5043
Remove unused test code.
...
- make naming consistent with the kernel module.
- better distribution of functionality from src/wireguard.rs
- more consistent "import pattern" throughout the project.
- remove unused test code.
2019-12-21 00:17:31 +01:00
Mathias Hall-Andersen
f8f404c871
Constant renamed to be consistent with kernel WG
2019-12-16 16:53:23 +01:00
Mathias Hall-Andersen
22f978f014
Clean dead code
2019-12-16 16:37:16 +01:00
Mathias Hall-Andersen
fd3ba63e80
Revert to crossbeam
2019-12-16 15:26:15 +01:00
Mathias Hall-Andersen
c873528a55
Removed unused atexit
2019-12-14 13:40:00 +01:00
Mathias Hall-Andersen
e0db9861bc
Added profiler feature
2019-12-14 13:37:51 +01:00
Mathias Hall-Andersen
6566796387
Remove crossbeam dependency
2019-12-10 18:17:48 +01:00
Mathias Hall-Andersen
3b376cd6fb
Formatting
2019-12-09 13:38:08 +01:00
Mathias Hall-Andersen
d1350620be
Merge branch 'runq' of ssh://git.zx2c4.com/wireguard-rs into runq
2019-12-09 13:21:42 +01:00
Mathias Hall-Andersen
115fa574a8
Move to run queue
2019-12-09 13:21:12 +01:00
Mathias Hall-Andersen
00c1ea17d5
Remove futures from dependencies
2019-12-06 21:58:01 +01:00
Mathias Hall-Andersen
74e576a9c2
Fixed inbound job bug (add to sequential queue)
2019-12-06 21:45:21 +01:00
Mathias Hall-Andersen
5a7f762d6c
Moving away from peer threads
2019-12-03 21:49:08 +01:00
Mathias Hall-Andersen
549b2cf5d0
Close socket fd after getmtu ioctl
2019-11-28 09:52:59 +01:00
Mathias Hall-Andersen
68b04e8074
Fetch updated MTU on linux
2019-11-27 22:39:52 +01:00
Mathias Hall-Andersen
04f507556b
Work on netlink IF event code for Linux
2019-11-27 16:59:54 +01:00
Mathias Hall-Andersen
f228b6f98b
Enable up/down from configuration interface
2019-11-25 13:33:00 +01:00
Mathias Hall-Andersen
3bff078e3f
Make IO traits suitable for Tun events (up/down)
2019-11-24 18:41:43 +01:00
Mathias Hall-Andersen
dee23969f5
Daemonization
2019-11-21 17:12:00 +01:00
Mathias Hall-Andersen
92dbb4c46a
Clean dependencies and imports
2019-11-21 11:43:16 +01:00
Mathias Hall-Andersen
3ba0247634
Better compartmentalization of cryptokey router
2019-11-18 13:13:55 +01:00
Mathias Hall-Andersen
b1fbd7fbba
Bug fixes from compliance tests with WireGuard
2019-11-18 12:04:20 +01:00
Mathias Hall-Andersen
64707b0471
Update configuration API
2019-11-17 19:52:40 +01:00
Mathias Hall-Andersen
05710c455f
Update UAPI semantics for remove
2019-11-15 15:32:36 +01:00
Mathias Hall-Andersen
a85725eede
Initial version of full UAPI parser
2019-11-13 15:30:16 +01:00
Mathias Hall-Andersen
5b555a2e17
Work on UAPI serialize device
2019-11-11 23:13:46 +01:00
Mathias Hall-Andersen
2ff044dda9
Implemented UAPI "get" line-parser
2019-11-10 17:57:39 +01:00
Mathias Hall-Andersen
dd85201c15
Removal of secret key in the handshake module
2019-11-08 19:00:12 +01:00
Mathias Hall-Andersen
293914e47b
Implement disable/enable timers
2019-11-06 13:50:38 +01:00
Mathias Hall-Andersen
6ba40f17cb
Work on Up/Down operation on WireGuard device
2019-11-04 13:19:27 +01:00
Mathias Hall-Andersen
a0fa261a8a
Work on UAPI parser
2019-11-03 18:33:49 +01:00
Mathias Hall-Andersen
027d3d24d9
Work on configuration interface
2019-11-02 21:58:04 +01:00
Mathias Hall-Andersen
38cbe50223
Add derived_session
2019-10-31 19:17:20 +01:00
Mathias Hall-Andersen
b25c21885b
Work on timer semantics
2019-10-31 17:11:09 +01:00
Mathias Hall-Andersen
c413417196
Remove unused dependencies
2019-10-30 16:29:31 +01:00
Mathias Hall-Andersen
afc96611a5
Change router job to accommodate keep_key_fresh
2019-10-30 12:01:12 +01:00
Mathias Hall-Andersen
e04a11a8ca
Unified use of make_packet during tests
2019-10-29 16:53:59 +01:00
Mathias Hall-Andersen
4ff328b7da
First full test of pure WireGuard
2019-10-28 14:48:24 +01:00
Mathias Hall-Andersen
3e829c04d1
Fixed Ordering::Acquire -> Ordering::SeqCst typo
2019-10-23 14:14:08 +02:00
Mathias Hall-Andersen
8107973342
Work on pure WireGuard test
2019-10-23 14:00:21 +02:00
Mathias Hall-Andersen
ee3599d550
Moved IO traits into platform module
2019-10-23 12:08:35 +02:00
Mathias Hall-Andersen
3fa928b315
Work on platform specific code (Linux)
2019-10-23 10:32:18 +02:00
Mathias Hall-Andersen
2f3ceab036
Work on porting timer semantics and linux platform
2019-10-16 13:40:40 +02:00
Mathias Hall-Andersen
a08fd4002b
Work on Linux platform code
2019-10-13 22:26:12 +02:00
Mathias Hall-Andersen
6000cbf7e4
Port timer.c from WireGuard
2019-10-11 14:34:16 +02:00
Mathias Hall-Andersen
3d6e8f08a7
Enable adding TUN reader to WG interface
2019-10-11 12:57:24 +02:00
Mathias Hall-Andersen
7ce5415169
Start porting kernel timer semantics
2019-10-09 20:22:16 +02:00
Mathias Hall-Andersen
761c46064d
Restructure IO traits.
2019-10-09 15:08:26 +02:00
Mathias Hall-Andersen
c82d3e554b
Restructure dummy implementations
2019-10-06 13:33:15 +02:00
Mathias Hall-Andersen
edfd2f235a
Added key_confirmed callback
2019-09-28 18:01:55 +02:00
Mathias Hall-Andersen
794933d6dd
Work on peer timers
2019-09-22 21:35:06 +02:00
Mathias Hall-Andersen
5cc1083499
Added zero_key to peer
2019-09-21 17:22:03 +02:00
Mathias Hall-Andersen
6311aa3402
WIP: TUN IO worker
...
Also removed the type parameters from the handshake device.
2019-09-18 15:31:10 +02:00
Mathias Hall-Andersen
dfe4a22920
WIP: Work on handshake worker
2019-09-16 22:33:46 +02:00
Mathias Hall-Andersen
32c030367c
WIP: Handshake queue and workers
2019-09-15 21:10:23 +02:00
Mathias Hall-Andersen
f46762183a
Sent staged packets when key-pair confirmed
2019-09-15 15:15:15 +02:00
Mathias Hall-Andersen
b31becda71
Begin work on the pure Wireguard implemenation
...
Start joining the handshake device and router device in the top-level Wireguard implemenation.
2019-09-14 12:43:09 +02:00
Mathias Hall-Andersen
c3ad827197
Test for confirmation of key using staged packet
2019-09-11 16:36:38 +02:00
Mathias Hall-Andersen
de48bec958
Simplified router tests
2019-09-11 16:28:32 +02:00
Mathias Hall-Andersen
02d9bdcc96
Full inbound/outbound router test
2019-09-10 21:42:21 +02:00
Mathias Hall-Andersen
e371d39052
Begin work on full router interaction unittest
2019-09-08 12:59:35 +02:00
Mathias Hall-Andersen
eae915b2e8
Fixed outbound unittest
2019-09-07 19:19:51 +02:00
Mathias Hall-Andersen
7b61ee4c2d
Write inbound packets to TUN device
2019-09-07 18:38:19 +02:00
Mathias Hall-Andersen
8551e03ee3
Added outbound benchmark
...
Decent performance (~1.5Gb/s on old XPS laptop from 2014),
biggest bottleneck seems to be the heap allocator,
swapping with jemalloc yields 2x performance.
2019-09-05 19:58:12 +02:00
Mathias Hall-Andersen
b45d49201d
Output test number and parameters to debug
2019-09-04 21:44:11 +02:00
Mathias Hall-Andersen
af9c76452f
More extensive outbound test
2019-09-04 21:42:10 +02:00
Mathias Hall-Andersen
310be99fa6
Expanded outbound test
2019-09-04 19:22:47 +02:00
Mathias Hall-Andersen
6d11da441b
Simply passing of JobBuffer ownership
2019-09-04 19:08:13 +02:00
Mathias Hall-Andersen
f55014ef8f
Wake workers when submitting work
2019-09-02 23:32:07 +02:00
Mathias Hall-Andersen
62d71a7a67
Reconsider inorder queueing
2019-09-02 20:22:47 +02:00
Mathias Hall-Andersen
929eadb651
Outbound cryptkey routing
2019-09-01 17:16:01 +02:00
Mathias Hall-Andersen
d16521f4c7
Added Bind trait to router
2019-08-31 21:00:10 +02:00
Mathias Hall-Andersen
46d76b80c6
Reduce number of type parameters in router
...
Merge multiple related type parameters into trait,
allowing for easier refactoring and better maintainability.
2019-08-31 20:25:16 +02:00
Mathias Hall-Andersen
c823af1a9c
Explicitly clear t0 in KDF macro
2019-08-31 15:52:41 +02:00
Mathias Hall-Andersen
7e5852ec26
Fix race condition on response processing
2019-08-31 15:46:18 +02:00
Mathias Hall-Andersen
51179f5433
Better management of key material
2019-08-31 15:03:14 +02:00
Mathias Hall-Andersen
0520b28ac2
Move to RustCrypto AEAD crate for handshake
2019-08-30 19:46:00 +02:00
Mathias Hall-Andersen
6785aa4cb5
Join with worker threads on device drop
2019-08-28 16:27:26 +02:00