Neil Alexander
e0b39b303f
Use regular mutex instead (less type assertions)
...
This reverts commit 5ba9dadc490a5880c68db2519a8bc768c6ee002b.
2023-05-20 18:36:44 +01:00
Neil Alexander
5ba9dadc49
Use sync.Map
instead of link actor
2023-05-20 18:31:01 +01:00
Neil Alexander
6e338b6f89
Fix con urrent map accesses
2023-05-20 18:21:02 +01:00
Neil Alexander
e290e744f4
Fix -autoconf
2023-05-20 10:54:49 +01:00
Neil Alexander
6ac2fae845
Fix Windows build
2023-05-19 20:34:51 +01:00
Neil Alexander
7b1635245f
Add missing path notify and bloom transform
2023-05-19 19:33:40 +01:00
Neil Alexander
a9ec3877b5
Fix unit test
2023-05-19 19:09:06 +01:00
Neil Alexander
7afa23be4c
Link refactoring, admin socket changes
2023-05-19 19:09:05 +01:00
Arceliar
669e61af9a
update to bugfixed ironwood, fix broken core test, add getPaths handler to admin socket
2023-05-13 16:15:04 -05:00
Arceliar
5e95246c26
update to ironwood v0.0.0-20230513191034-495699d87ae4 with API changes
2023-05-13 14:44:38 -05:00
Arceliar
e99c870d51
update admin functions and fix core tests
2023-03-26 16:49:40 -05:00
Arceliar
abbe94fa80
fix core tests and run gofmt on src
2023-03-26 16:34:49 -05:00
Arceliar
fc632c5caa
comment out some unused ipv6rwc code
2023-03-26 16:17:31 -05:00
Arceliar
5b6d9d52f3
update ironwood replace, update ipv6rwc to work (may need updates later if interface changes)
2023-03-26 16:12:45 -05:00
Neil Alexander
5a243d5b95
Update ironwood replace
2023-03-19 21:44:34 +00:00
Neil Alexander
a148f4cfec
More updates for Ygg v0.5
2023-03-19 10:33:07 +00:00
Neil Alexander
83c1a810b5
New handshake, use softcrdt
upstream
2023-03-18 12:14:32 +00:00
Neil
9ee6c46b1d
Merge branch 'develop' into bsd_build_fix
2023-02-26 21:40:29 +00:00
Neil Alexander
38736358dd
Fix lint error properly this time
2023-02-26 21:35:56 +00:00
Neil Alexander
6d6c408957
Test against Go 1.20, maybe fix lint issue
2023-02-26 21:31:20 +00:00
Neil
783b4d3de6
Merge branch 'develop' into bsd_build_fix
2023-02-26 21:28:29 +00:00
anon
9cbc71bc8a
Added member to Logger struct expected by tun_bsd.go
2022-12-18 00:37:34 -05:00
Neil Alexander
723097fbf6
Deduplicate some logic
2022-11-26 16:18:15 +00:00
Neil Alexander
1adc88ec77
Merge branch 'develop' into neilalexander/tryall
2022-11-26 16:00:46 +00:00
Neil Alexander
e824c73e21
Fix crash
2022-11-12 11:56:50 +00:00
Neil Alexander
7efd66932f
Redial failed connections if possible ( #983 )
2022-11-12 11:30:03 +00:00
majestrate
6fed2a75d7
Make TLS certs never expire ( #977 )
...
According to RFC5280 we can make TLS certs never expire by setting their `NotAfter` date to a value that is basically the end of time.
Fixes #976 .
2022-11-08 22:11:22 +00:00
Neil Alexander
110613b234
Try all addresses when connecting to a DNS name
...
Fixes #980
2022-11-08 21:59:13 +00:00
Neil Alexander
590d83aa9c
Fix #975 by not exporting uint8
2022-11-01 17:42:52 +00:00
Neil Alexander
cfa293d189
Fix bug in admin socket where requests fail unless "arguments":{}
is specified in the JSON
2022-10-26 22:29:19 +01:00
Neil Alexander
f08dec822a
Priority support ( #964 )
...
* Allow setting link priorities
* Fix a bug
* Allow setting priority on listeners and multicast interfaces
* Update `yggdrasilctl`
* Update to Arceliar/ironwood#5
2022-10-26 09:24:24 +01:00
Neil Alexander
9a9452dcc8
Fix panic in GetPeers
that may happen mid-link setup
2022-10-25 18:58:52 +01:00
Neil Alexander
65e350153e
Don't start multicast module if all Beacon
and Listen
are disabled
2022-10-22 18:05:14 +01:00
Neil Alexander
35ea66d651
Varying connection check strictness based on scope
2022-10-22 17:45:09 +01:00
Neil Alexander
8fe1c41295
Don't reject multiple genuine links from the same host
2022-10-22 16:59:25 +01:00
Neil Alexander
d66b3ffb7a
Always allow link-local peerings again
2022-10-22 16:23:25 +01:00
Neil Alexander
63c4cb5c21
Fix reporting name for TCP
2022-10-22 15:47:09 +01:00
Neil Alexander
0a1a155e66
Use SO_REUSEADDR
instead of SO_REUSEPORT
on Linux
2022-10-22 14:56:29 +01:00
Neil Alexander
c55611a478
Tweak logging for connections
2022-10-22 14:56:11 +01:00
Neil Alexander
22caddef63
Don't log duplicate connection attempt
2022-10-21 19:49:49 +01:00
Neil Alexander
81839ad50d
Fix InterfacePeers
2022-10-21 19:49:15 +01:00
Neil Alexander
ee21c56e43
Fix setting nodeinfo ( closes #954 )
2022-10-15 15:42:52 +01:00
Neil Alexander
69632bacb5
Tidy up
2022-10-02 13:20:39 +01:00
Neil Alexander
428d2375da
Don't allow configuring the same peer more than once
2022-10-02 12:39:18 +01:00
Neil Alexander
8cf76f841d
Silence already connected to this node
2022-10-02 12:36:51 +01:00
ehmry
7db934488e
Reimplement AddPeer and RemovePeer for admin socket ( #951 )
...
* Reimplement AddPeer and RemovePeer for admin socket
Fix #950
* Disconnect the peer on `removePeer`
Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>
2022-10-02 12:35:43 +01:00
Neil Alexander
c922eba2d8
Fix sending arguments to the admin socket in yggdrasilctl
2022-09-24 21:28:09 +01:00
Neil Alexander
d9fe6f72ac
Lint tweaks
2022-09-24 17:05:44 +01:00
Neil Alexander
d24d3fa047
Use deadline for link handshake ( #949 )
...
This uses a 6 second deadline for timeouts instead of using `util.FuncTimeout` at 30 seconds for the read and then again for the write.
If the handshake doesn't complete within 6 seconds then it's going to probably collapse when we give the connection to Ironwood and it tries to do a keepalive anyway.
2022-09-24 16:51:31 +01:00
Neil Alexander
e165b1fa0c
Add quote marks to InterfacePeers
comment
...
Fixes #945 .
2022-09-24 14:44:50 +01:00
Neil Alexander
01c44a087b
Rename tuntap
package to tun
...
We haven't had TAP support in ages.
2022-09-24 14:41:47 +01:00
Neil Alexander
217ac39e77
Allow setting default config path and AdminListen
at compile time
...
By providing the following items to `LDFLAGS`:
* `-X github.com/yggdrasil-network/yggdrasil-go/src/defaults.defaultConfig=/path/to/config`
* '-X github.com/yggdrasil-network/yggdrasil-go/src/defaults.defaultAdminListen=unix://path/to/sock'
Closes #818 .
2022-09-24 14:09:08 +01:00
Neil Alexander
0abfe78858
Silence error when reconnecting to already connected peer
2022-09-24 13:46:22 +01:00
Neil Alexander
b67c313f44
Admin socket and yggdrasilctl
improvements
...
This refactors the request parsing, as well as improving the output for some request types. It also tweaks `yggdrasilctl` output, which should help with #947 .
2022-09-24 12:22:38 +01:00
Neil Alexander
5ef61faeff
Link refactor ( #941 )
...
* Link refactoring
* More refactoring
* More tweaking
* Cleaner shutdowns, UNIX socket support, more tweaks
* Actorise links, remove mutex
* SOCKS support
2022-09-17 20:07:00 +01:00
Neil Alexander
dc9720e580
Extend getSessions
admin call to include uptime/TX/RX
2022-09-03 16:55:57 +01:00
Neil Alexander
5477566fa9
Length not capacity
2022-09-03 12:38:42 +01:00
Neil Alexander
9cdfd59476
Tidy up a bit, make sure to copy the private key at startup
2022-09-03 12:34:29 +01:00
Neil Alexander
a7d06e048a
Refactor TUN setup (isolated config)
2022-09-03 12:20:57 +01:00
Neil Alexander
b1f61fb0a8
Refactor admin socket setup (isolated config)
2022-09-03 11:54:46 +01:00
Neil Alexander
493208fb37
Refactor multicast setup (isolated config, etc)
2022-09-03 11:42:05 +01:00
Neil Alexander
dad0b10dfe
Move Core._applyOption
2022-09-03 10:51:44 +01:00
Neil Alexander
c6fe81b5d2
Admin socket and yggdrasilctl
refactoring ( #939 )
2022-09-03 10:50:43 +01:00
Neil Alexander
4f2abece81
Fix panic in tcp.init
for incorrectly formatted listen addresses
2022-09-01 16:56:42 +01:00
Karandashov Daniil
486ffebedd
Delete unused param ( #935 )
2022-08-29 20:40:19 +01:00
Neil Alexander
dd66e8a9c9
Merge branch 'develop' into neilalexander/refactor
2022-08-06 15:23:44 +01:00
Neil Alexander
16b8149052
No longer use ioutil
which is deprecated
2022-08-06 15:21:21 +01:00
Neil Alexander
4c889703b1
Continue refactoring
2022-08-06 15:05:12 +01:00
Neil Alexander
5616b9fc84
Don't lose my work
2022-07-24 10:23:25 +01:00
Neil Alexander
8c454a146c
Silence incorrect linter warning
2022-07-07 18:19:15 +01:00
Neil Alexander
88a0a3e8fb
Fix data races in handleProto
(observed by @majestrate)
2022-07-07 17:03:29 +01:00
Neil Alexander
41d890bb64
Run goimports
2022-04-17 18:02:25 +01:00
Neil Alexander
90f9be38c5
Fix lint errors
2022-04-17 17:56:54 +01:00
Neil Alexander
0c4c385885
Fix regression in Path MTU discovery
...
In the past we used to send back anything up to 900 bytes of the packet in the ICMPv6 Packet Too Big response, whereas now we seemingly only send back 40 bytes.
It turns out that sending back only the 40 bytes of IPv6 headers isn't enough for most operating systems to positively ID the flow to reduce the MTU. This PR updates it so that we can send up to 512 bytes instead (900 is probably excessive) — that should leave plenty of room for any number of IPv6 extension headers and the next protocol headers and some of the payload.
This seems to fix the problem in my testing.
2022-04-03 12:48:06 +01:00
Neil Alexander
2d2ad4692b
Restore uptime
, bytes_sent
and bytes_recvd
to getPeers
( #888 )
...
* Restore `uptime`, `bytes_sent` and `bytes_recvd` to the admin API for peers
* Wrap conn in Yggdrasil instead, so not necessary to do so in Ironwood
* Shuffle struct for alignment
2022-02-01 13:37:45 +00:00
Tom
9f5cc0eecb
Make message clearer and downgrade ( #812 )
...
* Make message clearer and downgrade
* Differentiate between incoming and outgoing conn
2022-01-30 21:58:57 +00:00
Alex Kotov
87e936195e
Add some tests ( #828 )
...
* Add tests
* Add tests
* Add tests
* Add tests
* Fix code style
* Remove unnecessary tests
2021-11-04 08:05:53 +00:00
Neil Alexander
4859accbb0
Fix panic in address.GetKey()
( fixes #860 )
2021-11-02 18:03:16 +00:00
Neil Alexander
99227b60ce
Update CI to use Go 1.17, produce Apple Silicon builds ( closes #844 )
2021-09-28 11:02:15 +01:00
Arceliar
f92d812f3c
Merge pull request #822 from yggdrasil-network/sni
...
TLS Server Name Indication
2021-09-24 05:14:28 -05:00
Arceliar
6af9b61b15
Merge pull request #842 from Arceliar/mutex
...
Fix incorrect mutex use in ipv6rwc
2021-09-24 04:43:44 -05:00
Arceliar
f2d1eff8f6
Merge pull request #835 from kotovalexarian/test-and-refactor-proto-handler
...
Really tiny refactoring of "src/core"
2021-09-24 04:43:06 -05:00
Arceliar
e5d638ff4b
better way to empty ipv6rwc buffer
2021-09-23 04:39:12 -05:00
Arceliar
86e5306eec
fix race from mutex that wasn't held long enough
2021-09-23 04:35:31 -05:00
Arceliar
529a33034b
gofmt to add new build comments
2021-09-23 04:34:58 -05:00
Fyodor Ustinov
52345a2de4
Check tun.config is not equal to nil before usage ( #830 )
...
We have to check tun.config is not nil before first use, not after.
2021-09-21 21:19:25 +01:00
Alex Kotov
571186ca77
Rename protohandler attributes
2021-09-03 01:45:30 +05:00
Alex Kotov
3c89781057
Align and reorder code for lesser diff
2021-09-01 07:58:11 +05:00
Alex Kotov
a5f2ba80a2
Organize code in "src/core/proto.go"
2021-09-01 07:50:03 +05:00
Alex Kotov
538ee13669
Add type core.AddHandlerFunc
2021-09-01 06:16:57 +05:00
Arceliar
3613614b41
Revert "Add IPReadWriteCloser interface"
...
This reverts commit ebe366ef3bcb1b22a31225b06d140d013e463647.
2021-08-07 12:56:36 -05:00
Neil Alexander
ebe366ef3b
Add IPReadWriteCloser interface
2021-08-07 10:17:21 +01:00
Neil Alexander
d1cd671bec
Fix bug
2021-08-01 21:39:49 +01:00
Neil Alexander
bbdff033ce
Update SNI code
2021-08-01 21:36:51 +01:00
Neil Alexander
f094cf34bf
Set SNI by default if the peering URI contains a DNS name
2021-07-28 22:23:33 +01:00
Neil Alexander
d8df9755f2
Allow specifying TLS SNI with ?sni= in peering URI
2021-07-28 22:11:20 +01:00
Neil Alexander
52309d094c
Merge pull request #800 from yggdrasil-network/iprwc
...
Refactor PacketConn/ReadWriteCloser interfaces
2021-07-15 09:39:03 +01:00
Timur Demin
04ecdf6045
Preallocate memory when deriving address from key
...
This makes src/address.AddrForKey preallocate 32 bytes before starting
the address derivation. As benches in syg_go show, reallocating temp
takes 20% of the function runtime.
2021-07-08 16:04:43 +05:00
Arceliar
cd5383f7b7
fix core tests
2021-07-07 18:36:51 -05:00
Arceliar
3704ebf4cb
fix debug rpcs and cleanup core.Close/core.Stop
2021-07-06 19:45:12 -05:00
Neil Alexander
e224c02d6d
Revert "Add LocalAddr to complete net.PacketConn interface"
...
This reverts commit e4ce2c79a9a6430f7145798a9a3e93c544bd869c.
2021-07-05 22:35:46 +01:00
Neil Alexander
e4ce2c79a9
Add LocalAddr to complete net.PacketConn interface
2021-07-05 22:26:09 +01:00
Arceliar
f990a56046
have the core wrap and export the underlying PacketConn, move IPv6 ReadWriteCloser wrapper logic to a separate package
2021-07-05 13:14:12 -05:00
Neil Alexander
9b28f725e2
Fix core_test.go
2021-06-28 18:28:56 +01:00
Neil Alexander
3646a8674c
Yggdrasil v0.4.0rc4
2021-06-28 18:21:53 +01:00
Arceliar
de853fed10
multicast configuration changes
2021-06-27 17:24:46 -05:00
Arceliar
2874ce1327
change multicast config format
2021-06-27 03:15:41 -05:00
Arceliar
2a7a53b6b6
move GenerateConfig to defaults, to adjust dependency ordering, needed for stuff later
2021-06-27 02:18:51 -05:00
Arceliar
2db46c1250
make socks connect to tls listeners, TODO make that configurable
2021-06-25 21:40:19 -05:00
Arceliar
d1dfe38683
remove string from multicast announcement format
2021-06-25 21:27:29 -05:00
Arceliar
3b38ed082f
make failed sends a debug log, instead of error
2021-06-25 21:15:40 -05:00
Neil Alexander
39361af789
Update config comments
2021-06-19 17:51:11 +01:00
Arceliar
b7f57c0617
use TLS for multicast peers, fix TLS listener type in log output
2021-06-19 10:42:38 -05:00
Arceliar
5564de94ba
when using tls, if no pinned key is set, pin the key from the cert. require that cert keys match a pinned key
2021-06-19 09:53:11 -05:00
Arceliar
1bf751a474
update ironwood, only store 1 packet in the pre-session buffer
2021-06-19 07:44:37 -05:00
Arceliar
b34c3230f8
fix core_test.go and a race in setting/using mtu
2021-06-13 13:40:20 -05:00
Arceliar
cb81be94ec
skip multicast packets sent from our own key
2021-06-13 12:31:52 -05:00
Arceliar
2726dc0076
don't return an error if the source address is wrong, since this happens very frequently for link-local traffic
2021-06-13 09:51:53 -05:00
Arceliar
c6a7a077a3
add remote URI to GetPeers (fallback to net.Conn.RemoteAddr().String() if the uri is unknown)
2021-06-13 09:25:08 -05:00
Arceliar
6c63b02385
Merge branch 'future' of https://github.com/yggdrasil-network/yggdrasil-go into future
2021-06-13 05:44:32 -05:00
Arceliar
8f91f0c050
fix nodeinfo and debug admin functions, this is ugly / a hack, but it works i guess...
2021-06-13 05:43:03 -05:00
Neil Alexander
c8938a3527
Add missing icmpv6.go
2021-06-13 11:34:59 +01:00
Arceliar
3393db8e77
move ICMP PacketTooBig sending into core
2021-06-13 05:25:13 -05:00
Arceliar
816356ea65
mostly finish migration of IP stuff to core, tuntap is still responsible for ICMP PacketTooBig
2021-06-13 04:54:06 -05:00
Arceliar
1147ee1934
WIP moving IP-specific checks from tuntap to core
2021-06-13 04:22:21 -05:00
Arceliar
91235980af
fix logging for socks
2021-06-12 07:03:32 -05:00
Arceliar
eeadffe4a5
move position of log line on shutdown
2021-06-12 06:07:33 -05:00
Arceliar
5b6f730f18
keep a context in the core, use it for listen/dial, cancel it when closing
2021-06-12 06:06:39 -05:00
Arceliar
3815b13ad5
use DialContext
2021-06-12 05:58:14 -05:00
Neil Alexander
acdc3dd3c0
Replace ?ed25519= with ?key= in peering URIs
2021-06-11 21:12:27 +01:00
Arceliar
f7607557c1
fix nBytes check in multicast code
2021-06-06 04:48:00 -05:00
Arceliar
e7da3d72c4
remove session firewall, this can't prevent memory use so it's better to just use OS native tools
2021-06-06 02:35:02 -05:00
Neil Alexander
2e2566d248
Remove src/core/doc.go
2021-06-05 21:56:31 +01:00
Neil Alexander
4a684e7caf
Don't add mutex to config output
2021-06-05 21:48:20 +01:00
Neil Alexander
ea15eeee7e
Ensure PublicKey option is unused, map old config options
2021-06-05 21:32:04 +01:00
Neil Alexander
99973b2757
Remove module package, it didn't really give us anything anyway
2021-06-05 20:57:03 +01:00
Neil Alexander
cb536a7322
Clean up util package
2021-06-05 20:55:08 +01:00
Arceliar
414c100125
add public keys to multicast, public key pinning to multicast peering
2021-06-05 05:07:04 -05:00
Neil Alexander
ff751a5409
Fix lint error
2021-06-02 14:46:04 +01:00
Neil Alexander
8932ab0519
Fix lint errors
2021-06-02 14:40:09 +01:00
Neil Alexander
166336a418
Remove config.NodeState (hot reconfig is no longer supported)
2021-06-02 14:19:32 +01:00
Arceliar
978124dbb1
update dependency (ironwood), fix units in core benchmark
2021-05-31 06:39:53 -05:00
Arceliar
1db7437b80
more cleanup and fix a busyloop when the admin socket is shut down
2021-05-29 21:37:13 -05:00
Arceliar
e25ad9ed21
cleanup unused code
2021-05-29 20:42:06 -05:00
Arceliar
180654c495
possibly fix src/core/core_test.go
2021-05-29 11:13:59 -05:00
Arceliar
8a60c605f6
remove metric stuff, there's already enough new stuff to test, maybe revisit this in a future release
2021-05-24 18:53:54 -05:00
Arceliar
c60dd42baa
cleanup
2021-05-23 21:51:09 -05:00
Arceliar
5f2bcaa71f
add Listen to api and listenURL to tcp
2021-05-23 21:47:12 -05:00
Arceliar
fd5cda6329
read metric from urls for listen and peers
2021-05-23 20:58:34 -05:00
Arceliar
70c5b06286
use url.URL in place of string for most internal listen/peer address handling
2021-05-23 20:34:13 -05:00