Neil Alexander
166d25619d
Attempt to support NetBSD
...
This code actually consolidates a lot of the BSD code together, and even setting the interface MTU with SIOCSIFMTU seems to work fine.
What doesn't work though is setting the interface address using SIOCSIFADDR_IN6, which I attempted to plagiarise from the Darwin code.
As a fallback, ifconfig is used, which solves the problem enough to get it working.
2018-03-04 23:47:01 +00:00
Arceliar
cd0d1a1d26
get the fd instead of depending on water to do it
2018-03-04 13:57:34 -06:00
Arceliar
039c4a5a35
only try to build on openbsd and freebsd for now, darwin needs work too
2018-03-04 11:02:54 -06:00
Arceliar
478b80a07a
cleanup
2018-03-04 10:56:46 -06:00
Arceliar
e7726cfb00
deduplicate some bsd tuntap code, still untested
2018-03-04 10:55:32 -06:00
Neil Alexander
c30792245a
Add FreeBSD support in TAP mode
2018-03-04 16:24:50 +00:00
Neil Alexander
a92e6c2588
Merge pull request #29 from Arceliar/netlink
...
Linux: use netlink instead of ip
2018-03-04 10:47:34 +00:00
Arceliar
5ec6265a70
use netlink instead of ip commands to set address/mtu and bring up the tuntap device on linux
2018-03-03 16:41:36 -06:00
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