Commit Graph
100 Commits
Author SHA1 Message Date
Mathias Hall-Andersen 1fb7975d3d Upgrade dependencies
Signed-off-by: Mathias Hall-Andersen <mathias@hall-andersen.dk>
2021-01-05 22:53:27 +01:00
Mathias Hall-Andersen a7dea4f2b4 Added MIT license 2020-07-06 14:49:57 +02:00
Mathias Hall-Andersen 6e307fc70e Replace RwLock<HashMap> with DashMap in handshake 2020-06-19 23:45:56 +02:00
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