Mathias Hall-Andersen
9c5083bd19
Removed debugging locks
2018-02-04 16:46:24 +01:00
Mathias Hall-Andersen
a0f54cbe5a
Align with go library layout
2018-02-04 16:08:26 +01:00
Mathias Hall-Andersen
5871ec04de
Fixed tests
2018-02-02 20:45:25 +01:00
Mathias Hall-Andersen
4f97b52ea6
Clear cryptographic state when interface down
...
Attempts to clear the cryptographic state for every
peer when the device goes down.
2018-02-02 17:24:29 +01:00
Mathias Hall-Andersen
029410b118
Rework of entire locking system
...
Locking on the Device instance is now much more fined-grained,
seperating out the fields into "resources" st. most common interactions
only require a small number.
2018-02-02 16:40:14 +01:00
Mathias Hall-Andersen
1e42b14022
Merge branch 'timer-teardown' of git.zx2c4.com:wireguard-go into timer-teardown
2018-02-01 11:20:36 +01:00
Mathias Hall-Andersen
a57c790e36
Added binary to .gitignore
2018-01-31 10:11:36 +01:00
Mathias Hall-Andersen
f73d2fb2d9
Added initial version of peer teardown
...
There is a double lock issue with device.Close which has yet to be
resolved.
2018-01-26 22:52:32 +01:00
Mathias Hall-Andersen
068d932f2c
Fixed potential DoS issue
2018-01-16 14:57:12 +01:00
Mathias Hall-Andersen
1dd590b91b
Work on timer teardown + bug fixes
...
Added waitgroups to peer struct for routine
start / stop synchronisation
2018-01-13 09:00:37 +01:00
Mathias Hall-Andersen
d73f960aab
Peer timer teardown
2017-12-29 17:42:09 +01:00
Mathias Hall-Andersen
996c7c4d8a
Removed IFF_NO_PI from TUN linux
...
This change was needed for the Linux TUN status hack
to work properly (not increment the error counter).
This commit also updates the TUN interface to allow for
the construction / removal of the TUN info headers in-place.
2017-12-04 21:39:06 +01:00
Mathias Hall-Andersen
9fef0ca2fb
Removed profiler code
2017-12-02 00:00:45 +01:00
Mathias Hall-Andersen
eaca1ee1f7
More consistent use of signal struct
2017-12-01 23:37:26 +01:00
Mathias Hall-Andersen
cb09125dc4
Fixed receive path infinite loop
2017-12-01 00:03:06 +01:00
Mathias Hall-Andersen
cd369cde45
Added missing exit codes
2017-11-30 23:30:29 +01:00
Mathias Hall-Andersen
02ce67294c
Refactor timers.go
2017-11-30 23:22:40 +01:00
Mathias Hall-Andersen
479a6f240e
Fixed typos
2017-11-29 21:12:09 +01:00
Mathias Hall-Andersen
471f7ff08e
Added cross namespace TUN status detection
2017-11-29 18:46:31 +01:00
Mathias Hall-Andersen
af464cff00
Better naming of bind helpers
2017-11-19 13:35:17 +01:00
Mathias Hall-Andersen
b5ae42349c
Merge branch 'source-caching'
2017-11-19 13:19:07 +01:00
Mathias Hall-Andersen
9ebab57c41
Implemented missing methods for Bind and Endpoint
2017-11-19 13:14:15 +01:00
Mathias Hall-Andersen
a79fdc13a2
Begin generic Bind implementation
2017-11-19 00:21:58 +01:00
Mathias Hall-Andersen
d10126f883
Moved endpoint into interface and simplified peer
2017-11-18 23:34:02 +01:00
Mathias Hall-Andersen
fa399a91d5
Ported remaining netns.sh
...
- Ported remaining netns.sh tests
- Begin work on generic implementation of bind interface
2017-11-17 17:25:58 +01:00
Mathias Hall-Andersen
e1227d3af4
Allows passing UAPI fd to service
2017-11-17 14:36:08 +01:00
Mathias Hall-Andersen
88801529fd
Moved TUN device creation to pre-fork
2017-11-14 18:26:28 +01:00
Mathias Hall-Andersen
69fe86edf0
Initial working source caching
2017-11-14 16:27:53 +01:00
Mathias Hall-Andersen
566269275e
Fixed blocking reader on closed socket
2017-11-11 23:26:44 +01:00
Mathias Hall-Andersen
892276aa64
Fixed port endianness
2017-11-11 15:43:55 +01:00
Mathias Hall-Andersen
0485c34c8e
Fixed message header length in conn_linux
2017-10-27 10:43:37 +02:00
Mathias Hall-Andersen
fd6f2e1f55
Fixed timer issue when failing to send handshake
...
+ Identified send4 issue
2017-10-17 16:50:23 +02:00
Mathias Hall-Andersen
e86d03dca2
Initial implementation of source caching
...
Yet untested.
2017-10-16 21:33:47 +02:00
Mathias Hall-Andersen
a72b0f7ae5
Added new UDPBind interface
2017-10-08 22:03:32 +02:00
Mathias Hall-Andersen
2d856045a0
Begin incorporating new src cache into receive
2017-10-07 22:35:23 +02:00
Mathias Hall-Andersen
c70f0c5da2
Definition of platform specific socket bind
2017-10-06 22:56:01 +02:00
Mathias Hall-Andersen
eefa47b0f9
Begin work on source address caching (linux)
2017-09-24 21:35:25 +02:00
Mathias Hall-Andersen
47a21c8bb0
Added last_minute_handshake_guard
...
- Added last_minute_handshake_guard and reverted keypair changes.
- Added comment explaining the state of Go in releation to handling
cryptographic state in memory.
- Decreased logging level of netsh test
2017-09-20 09:26:08 +02:00
Mathias Hall-Andersen
f212795e51
Improved readability of send/receive code
2017-09-09 15:03:01 +02:00
Mathias Hall-Andersen
89d0045214
Fixed TUN interface implementation os OS X
2017-09-03 18:10:06 +02:00
Mathias Hall-Andersen
c24b883c01
Fixed KDF tests
2017-09-01 14:31:57 +02:00
Mathias Hall-Andersen
0294a5c0dd
Improved handling of key-material
2017-09-01 14:21:53 +02:00
Mathias Hall-Andersen
239d582cb2
Renamed config.go to follow general naming pattern
2017-08-28 18:30:11 +02:00
Mathias Hall-Andersen
6f5ef153c3
Added code from windows branch
2017-08-27 15:41:00 +02:00
Mathias Hall-Andersen
eafa3df606
Added fwmark code
2017-08-25 14:53:23 +02:00
Mathias Hall-Andersen
4986cfe78b
Add support for fwmark on linux
2017-08-22 17:22:45 +02:00
Mathias Hall-Andersen
c6d03ef17f
Update MTU based on netlink messages (linux)
2017-08-22 14:57:32 +02:00
Mathias Hall-Andersen
04640eb629
Added missing IF index check
2017-08-17 12:58:18 +02:00
Mathias Hall-Andersen
24f9394f64
Detects interface status on linux
2017-08-17 00:25:39 +02:00
Mathias Hall-Andersen
754ed08bf4
Improved test script
2017-08-14 17:14:44 +02:00
Mathias Hall-Andersen
12e8db2066
Improved cookie/mac computation code
2017-08-14 17:09:25 +02:00
Mathias Hall-Andersen
a4eff12d7f
Improved receive.go
...
- Fixed configuration listen-port semantics
- Improved receive.go code for updating listen port
- Updated under load detection, how follows the kernel space implementation
- Fixed trie bug accidentally introduced in last commit
- Added interface name to log (format still subject to change)
- Can now configure the logging level using the LOG_LEVEL variable
- Begin porting netsh.sh tests
- A number of smaller changes
2017-08-11 16:18:20 +02:00
Mathias Hall-Andersen
cba1d6585a
Number of fixes in response to code review
...
This version cannot complete a handshake.
The program will panic upon receiving any message on the UDP socket.
2017-08-07 15:25:04 +02:00
Mathias Hall-Andersen
8c34c4cbb3
First set of code review patches
2017-08-04 16:15:53 +02:00
Mathias Hall-Andersen
22c83f4b8d
Merge branch 'master' of git.zx2c4.com:wireguard-go
2017-08-02 15:32:12 +02:00
Mathias Hall-Andersen
a70c44a9f6
Create /var/run/wireguard if non-existent
2017-08-02 15:30:57 +02:00
Mathias Hall-Andersen
91c1822473
Remove stale unix socket
2017-08-01 12:45:11 +02:00
Mathias Hall-Andersen
b03a6ab1b1
Close UAPI socket before exit
2017-08-01 12:15:20 +02:00
Mathias Hall-Andersen
d7a49b8b8c
Verify source address
2017-07-31 22:26:55 +02:00
Mathias Hall-Andersen
1fb00e8045
Fixed shadowing bug
2017-07-27 23:51:07 +02:00
Mathias Hall-Andersen
92135131a7
Merge branch 'master' of git.zx2c4.com:wireguard-go
2017-07-27 23:46:01 +02:00
Mathias Hall-Andersen
fb3fa4f915
Improved timer code
2017-07-27 23:45:37 +02:00
Mathias Hall-Andersen
c3d9ae402d
Close UDP connection when listen port changes
2017-07-23 16:21:08 +02:00
Mathias Hall-Andersen
2ed9dac3a5
Merge branch 'darwin'
2017-07-23 15:48:23 +02:00
Mathias Hall-Andersen
2a6dd2ed92
Fixed UAPI deadlock
2017-07-21 15:17:43 +02:00
Mathias Hall-Andersen
47f8a3d89a
Moved remaining platform dependent UAPI code
2017-07-20 15:06:24 +02:00
Mathias Hall-Andersen
086d32186a
Reviewed and added OSX patch
...
The patch was provided by:
Naveen Nathan <[email protected] >
The following modifications to the patch was made:
- Added copyright notice
- Fixed file descriptor leak in .MTU() method
- Migrated to the new(er) golang.org/x/sys/unix package
- Removed non-functioning Daemonize method
2017-07-19 13:12:25 +02:00
Mathias Hall-Andersen
18714fc4a4
Added last_handshake_time fields to UAPI
2017-07-18 15:22:56 +02:00
Mathias Hall-Andersen
bd6027a4d5
Fixed file descriptor leak on linux
2017-07-18 14:15:29 +02:00
Mathias Hall-Andersen
c5d7efc246
Fixed deadlock in index.go
2017-07-17 16:16:18 +02:00
Mathias Hall-Andersen
dd4da93749
Added padding
...
Added plaintext padding and fixed default interface MTU
2017-07-15 16:27:59 +02:00
Mathias Hall-Andersen
b21c82e32d
Conforming to the cross-platform UX
...
The implementation now terminates when the unix socket is deleted.
Currently we are unable to use fsnotify (on linux),
since it does not notify on the deletion of open files.
The implementation can now daemonize (on linux)
or be kept in the foreground by providing the necessary flag.
2017-07-15 13:41:02 +02:00
Mathias Hall-Andersen
8993b3927c
Improved throughput
...
- Improved performance by adding the message buffers to a sync.Pool.
- Fixed issue with computing "next" key-pair upon
receiving a response message.
2017-07-14 14:25:18 +02:00
Mathias Hall-Andersen
0043008ad0
Endpoint discovery from handshake initiation
2017-07-13 21:29:22 +02:00
Mathias Hall-Andersen
93e3848ea7
Terminate on interface deletion
...
Program now terminates when the interface is removed
Increases the number of os threads (relevant for Go <1.5, not tested)
More consistent commenting
Improved logging (additional peer information)
2017-07-13 14:32:40 +02:00
Mathias Hall-Andersen
8393cbff52
Restructured MAC/cookie calculation
...
Added copy-right headers accidentally removed
2017-07-12 23:11:49 +02:00
Mathias Hall-Andersen
86707cbc88
Fixed MTU method for linux TUN interface
...
Updated the TUN interface
Added the "MTU" method for the linux implementation of the TUN interface
2017-07-11 22:48:58 +02:00
Mathias Hall-Andersen
c273078376
Added ratelimiting of handshake messages
2017-07-11 18:48:29 +02:00
Mathias Hall-Andersen
9c4acb9f35
Fixed incomming initiation bug
2017-07-10 17:20:43 +02:00
Mathias Hall-Andersen
44c9896883
Added replay protection
2017-07-10 12:09:19 +02:00
Mathias Hall-Andersen
4ad62aaa6a
Improved timer state machine
2017-07-08 23:51:26 +02:00
Mathias Hall-Andersen
5c1ccbddf0
Added source verification
2017-07-08 09:23:10 +02:00
Mathias Hall-Andersen
ed31e75739
Fixed cookie reply processing bug
2017-07-07 13:47:09 +02:00
Mathias Hall-Andersen
70179f8c8c
Fixed broken test
2017-07-06 16:24:24 +02:00
Mathias Hall-Andersen
59f9316f51
Initial working full exchange
...
The implementation is now capable of connecting to another
wireguard instance, complete a handshake and exchange transport
messages.
2017-07-06 15:43:55 +02:00
Mathias Hall-Andersen
2aa0daf4d5
Fixed transport header problem
2017-07-02 15:28:38 +02:00
Mathias Hall-Andersen
1e620427bd
Handshake negotiation functioning
2017-07-01 23:29:22 +02:00
Mathias Hall-Andersen
a4cc0a30fa
Removed exponential backoff
2017-06-30 23:05:03 +02:00
Mathias Hall-Andersen
ba3e486667
Completed initial version of outbound flow
2017-06-30 14:41:08 +02:00
Mathias Hall-Andersen
7e185db141
Completed get/set configuration
...
For debugging of "outbound flow"
Mostly, a few things still missing
2017-06-29 14:39:21 +02:00
Mathias Hall-Andersen
1f0976a26c
Work on UAPI
...
Cross-platform API (get operation)
Handshake initiation creation process
Outbound packet flow
Fixes from code-review
2017-06-28 23:45:45 +02:00
Mathias Hall-Andersen
8236f3afa2
Implemented MAC1/2 calculation
2017-06-27 17:33:06 +02:00
Mathias Hall-Andersen
eb75ff430d
Begin implementation of outbound work queue
2017-06-26 22:07:29 +02:00
Mathias Hall-Andersen
9d806d3853
Begin work on outbound packet flow
2017-06-26 13:14:02 +02:00
Mathias Hall-Andersen
cf3a5130d3
Completed noise handshake
2017-06-24 22:03:52 +02:00
Mathias Hall-Andersen
25190e4336
Restructuring of noise impl.
2017-06-24 15:34:44 +02:00
Mathias Hall-Andersen
521e77fd54
Fixed missing type
2017-06-23 13:45:32 +02:00
Mathias Hall-Andersen
50aeefcb51
Beginning work noise handshake
2017-06-23 13:41:59 +02:00
Mathias Hall-Andersen
1868d15914
Beginning work on TUN interface
...
And outbound routing
I am not entirely convinced the use of net.IP is a good idea,
since the internal representation of net.IP is a byte slice
and all constructor functions in "net" return 16 byte slices
(padded for IPv4), while the use in this project uses 4 byte slices.
Which may be confusing.
2017-06-04 21:48:15 +02:00
Mathias Hall-Andersen
dbc3ee3e9d
Trie random test
...
Test trie against naive implementation of prefix routing.
2017-06-02 18:02:04 +02:00