Commit Graph

932 Commits

Author SHA1 Message Date
Arceliar
0460fdd301 panic if tun.write or tun.read returns an error and was launched from debug.go, since there's no way to recover in these scenarios 2018-03-03 13:56:26 -06:00
Arceliar
a367f2ca17 gofmt 2018-03-03 11:49:24 -06:00
Arceliar
0578a9f273 manual merge 2018-03-03 11:07:08 -06:00
Neil Alexander
4e5627f933 Update default interface MTU to use per-platform instead of global value 2018-03-03 12:43:39 +00:00
Neil Alexander
4917ea3dd2 Per-platform TUN defaults 2018-03-03 12:30:54 +00:00
Neil Alexander
bec898a326 Don't allow exceeding maximum MTU for a given platform 2018-03-03 11:47:14 +00:00
Neil Alexander
7c0102e43d Be a little bit less verbose on OpenBSD 2018-03-01 15:31:49 +00:00
Neil Alexander
6640b33334 Fix using 'auto' as device name on OpenBSD - default to /dev/tap0 2018-03-01 15:19:20 +00:00
Neil Alexander
24be3f1d67 Turns out FreeBSD is a bit different so restrict this to OpenBSD for now 2018-03-01 15:11:12 +00:00
Neil Alexander
90393ae03b Set interface flags properly on OpenBSD 2018-03-01 15:02:53 +00:00
Neil Alexander
9e4d169208 Set interface IP and MTU on BSD 2018-03-01 13:37:05 +00:00
Neil Alexander
f8dda26dba Add BSD support (openbsd, freebsd, solaris) 2018-03-01 11:49:49 +00:00
Neil Alexander
ebc4eacee4 Allow sane defaults on setTunTap 2018-02-28 15:27:58 +00:00
Neil Alexander
fdd32b9571 Add setTunTap 2018-02-28 15:15:57 +00:00
Neil Alexander
2b48fd1fce Add addPeer to admin socket 2018-02-28 13:43:06 +00:00
Arceliar
ddc4773b19 don't drop send/recv traffic going through the crypto workers, just block until they're free (TODO run further tests to make sure this doesn't cycle/deadlock) 2018-02-26 18:12:28 -06:00
Arceliar
63b55cda62 Mostly working PMTU discovery when going over UDP links 2018-02-25 20:24:36 -06:00
Arceliar
0470f6f1c1 cleanup 2018-02-23 13:04:52 -06:00
Arceliar
bb3ae8b39b temporarily limit PMTU to 2048, as a workaround to some pathelogical behavior where a TCP stream carried over a UDP peer can throttle down to 0 in the presence of significant packet loss 2018-02-23 12:46:22 -06:00
Arceliar
d3dc7765f2 trying to debug UDP+large MTU issues 2018-02-20 17:31:12 -06:00
Arceliar
a81c361484 tcp reconnect bufix, test with bufio, and switch back to tcp auto-peering by default to continue testing 2018-02-19 23:22:36 -06:00
Arceliar
a21a039b57 remove unused field from peer 2018-02-19 19:47:11 -06:00
Arceliar
4045597516 Use larger UDP chunks for link-local IP and let the OS fragment it. Switch to UDP for link-local peers. Minor code cleanup for TCP. 2018-02-19 19:34:51 -06:00
Arceliar
71150fcb86 ignore root tstamp updates if we just updated, to throttle the rate at which updates (and new signatures) can propagate 2018-02-17 23:57:24 -06:00
Arceliar
a66a29779a Slightly nicer way to throttle peer announcements 2018-02-17 23:41:42 -06:00
Arceliar
0fc7401635 check root before adding peers to the switch lookupTable, instead of during each lookup 2018-02-17 23:14:23 -06:00
Arceliar
430d49d8a4 send fewer link announcements, fix a ttl encoding bug, and remove unnecessary key field from the wire format for dht req/res 2018-02-17 21:59:08 -06:00
Arceliar
8ba11b86bb remove duplicate tcp connections 2018-02-17 20:44:23 -06:00
Arceliar
25f00c1c7a disable keys in link protocol traffic, since these are already known, *breaks backwards compat* 2018-02-17 20:30:59 -06:00
Arceliar
da44ec282f Add a rumor mill to throttle dht maintenance traffic 2018-02-17 17:10:08 -06:00
Neil Alexander
02473158d4 Allow setting IfName to 'none' to run without TUN/TAP 2018-02-15 22:29:13 +00:00
Neil Alexander
366d2af1d3 Fix first queued packet on session pcreation 2018-02-15 18:02:08 +00:00
Neil Alexander
1c59338f01 Fix checksums and packet buffers, sends ICMPv6 Packet Too Big messages successfully now 2018-02-15 13:38:54 +00:00
Neil Alexander
37e4492b86 Send ICMPv6 response to packets larger than session MTU (WIP: checksum wrong?) 2018-02-14 22:59:24 +00:00
Arceliar
a3a9696880
Merge pull request #14 from neilalexander/icmpv6
Replace ndp.go with icmpv6.go
2018-02-14 11:16:24 -06:00
Neil Alexander
844212e95b Highlight packets that exceed the agreed session MTU 2018-02-14 14:08:40 +00:00
Neil Alexander
34b264067e Run gofmt -s -w . 2018-02-14 11:46:10 +00:00
Neil Alexander
0bf43b758f Split create_icmpv6 into create_icmpv6_tun and create_icmpv6_tap 2018-02-14 11:39:55 +00:00
Neil Alexander
d78e0f7067 Improve icmpv6.go
- Now doesn't use unsafe
- Much cleaner
- Doesn't run in a goroutine perpetually
- Has a function to create ICMPv6 packets
2018-02-14 11:23:46 +00:00
Neil Alexander
6571a8c300 Don't use channels for ICMPv6 packets 2018-02-12 20:00:55 +00:00
Neil Alexander
fac4bf796e Add some error handling and other fixes to icmpv6.go 2018-02-12 19:40:13 +00:00
Neil Alexander
be0d6feeba Remove ndp.go and add icmpv6.go 2018-02-12 18:19:31 +00:00
Neil Alexander
7a0b48ffb3 Clean up session.go 2018-02-12 00:01:15 +00:00
Neil Alexander
11a7c5c458 Exchange MTU on wire 2018-02-11 23:58:30 +00:00
Neil Alexander
536974f20c Try to exchange MTUs when creating sessions 2018-02-11 23:09:05 +00:00
Neil Alexander
e9bd98d213 Add "IfTAPMode" configuration option to allow selecting TAP mode on supported platforms 2018-02-11 21:45:44 +00:00
Arceliar
d424489329 add tcp support and use it by default 2018-02-09 17:42:55 -06:00
Arceliar
4acce71468 Merge branch 'master' into bigmtu 2018-02-07 17:49:04 -06:00
Arceliar
e9adf327b0 possibly fix deadlock from race in peer linkloop goroutine, add some related debug code to the admin 2018-02-07 17:48:30 -06:00
Arceliar
b704d7b497 change mtu and enable udp chunking 2018-02-04 11:25:20 -06:00
Arceliar
63aadf6e88 use smaller buffer sizes for buffered channels 2018-02-03 18:44:28 -06:00
Arceliar
2dd8152a0c reorganize and add more to the admin 2018-01-29 18:48:14 -06:00
Arceliar
c18d863a3e update comments, mostly TODO/FIXME notes 2018-01-26 17:30:51 -06:00
Neil Alexander
e44f64bea0 Fix MTU issues with TAP adapters 2018-01-25 17:44:56 +00:00
Arceliar
d52fab8af6 disable/enable the tap device at startup to clear any old settings, e.g. old addresses 2018-01-24 21:14:26 -06:00
Arceliar
06e3c8c997 if you could go ahead and include your port number in your multicast announcements, that'd be great 2018-01-24 18:45:29 -06:00
Neil Alexander
761e7cdeb0 Remove apparently excessive escaping from netsh in tun_windows.go 2018-01-24 22:37:08 +00:00
Neil Alexander
ff55070458 TAP support added
- Supports Windows using OpenVPN NDIS 6 TAP driver
- Supports NDP Neighbor Solicitation and Advertisements in ndp.go
- Supports TAP encapsulation and decapsulation in tun.go
2018-01-24 10:59:01 +00:00
Arceliar
2b7c6eafcd In admin dot, reverse direction of peer links, include the switch port for each link, and sort the output by coords 2018-01-21 16:19:39 -06:00
Neil Alexander
36f9cc5041 Highlight own node on dot graph 2018-01-21 21:54:50 +00:00
Arceliar
87a4af7841 update admin dot to better handle missing nodes and to direct links towards parent, based on neilalexander's work 2018-01-21 14:58:54 -06:00
Arceliar
625b97c511 add and use a thread-safe way of reading router internal state, and include active sessions in the admin query 2018-01-21 12:55:45 -06:00
Neil Alexander
8ef852469b Formatting 2018-01-21 17:53:25 +00:00
Neil Alexander
483d90a728 Draw dot draphs (although maybe not very well) 2018-01-21 17:51:51 +00:00
Neil Alexander
c4ac0a90ac Add the ability to see switch ports and DHT 2018-01-21 12:57:54 +00:00
Neil Alexander
b754d68068 Add an admin socket 2018-01-21 00:17:15 +00:00
Arceliar
502ab3cfaa check that the source IP inside a packet matches the address or prefix for the session that transmitted it 2018-01-19 17:33:04 -06:00
Arceliar
f929df1ea9 minor performance adjustments 2018-01-18 18:48:34 -06:00
Neil Alexander
62c45e7cc7 Use MTU from interface definition 2018-01-15 14:39:07 +00:00
Neil Alexander
d7be706413 Move to unix.Syscall etc and tidy up 2018-01-15 14:35:37 +00:00
Neil Alexander
5d2dd061f0 Fix definition of SIOCAIFADDR_IN6 2018-01-15 14:14:18 +00:00
Neil Alexander
8e86c4b853 Merge /Users/neilalexander/Desktop/Projects/yggdrasil-go into macos-interface 2018-01-15 11:22:54 +00:00
Arceliar
75965b6da4 Switch connAddr (udp map key) from string to a struct that allocates less. Reduce some other allocations. Use larger channel buffers to reduce backpressure from runtime jitter. 2018-01-13 07:26:26 -06:00
Arceliar
ef1e0c902f Add regexp to limit which link-local IPv6 zones allow peering, and check that a peer isn't from within the networks address block (prevents accidental tunneling) 2018-01-09 02:08:54 -06:00
Neil Alexander
d69190715f Added a darwin tun module. It should work, but it doesn't! 2018-01-06 16:39:30 +00:00
Neil Alexander
c3600d14d6 Implement a tun interface to reduce dependency on Water library 2018-01-05 23:35:59 +00:00
Neil Alexander
b3ebe76b59 Run gofmt -s -w . 2018-01-04 22:37:51 +00:00
Neil Alexander
ae7b07ae6a Move Linux-specific ifname logic to tun_linux.go and place a generic in tun_other.go 2018-01-04 22:34:17 +00:00
Neil Alexander
1c799b305d Add support for specifying tun device name 2018-01-04 13:31:48 +00:00
Arceliar
e5d526881d Disable tun panic on IPv4 packets and add a link to a Vyatta router config 2018-01-03 15:27:13 -06:00
Arceliar
82fd435211 Avoid sending unnecessairy udp key packets, and try config peers less often 2018-01-02 18:45:09 -06:00
Arceliar
d7e6d814a0 first code/readme/license commit 2017-12-28 22:16:20 -06:00