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 ebe366ef3b
.
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 e4ce2c79a9
.
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
Arceliar
58af92812e
add metric to metadata exchange, but currently left at default 0 value
2021-05-23 18:40:36 -05:00
Arceliar
6bc2044ced
update ironwood dependency, fix ansible code, go mod tidy
2021-05-23 17:52:10 -05:00
Arceliar
018f35d9a2
rename src/yggdrasil to src/core
2021-05-23 14:42:26 -05:00
Arceliar
0343dad934
remove obsolete crypto package
2021-05-23 14:33:28 -05:00
Arceliar
f69f02386d
rename debug admin socket functions
2021-05-23 13:37:46 -05:00
Arceliar
e6f86a9bd7
cleanup proto admin socket response formats
2021-05-23 12:19:27 -05:00
Arceliar
29dda650b5
tun session protocol traffic cleanup
2021-05-23 11:58:52 -05:00
Arceliar
233cf0c962
add remote debugGetSelf and fix some return type things in the other debug functions
2021-05-22 21:27:11 -05:00
Arceliar
c7b004d36f
get debugGetPeers and debugGetDHT working in the admin socket
2021-05-22 20:25:14 -05:00
Arceliar
8668abf481
WIP adding crawling debug packets
2021-05-22 19:54:52 -05:00
Arceliar
b11cf7a2f2
update ironwood dependency, fix api
2021-05-18 20:43:38 -05:00
Arceliar
8d09e68e80
admin socket getpaths
2021-05-16 16:16:58 -05:00
Arceliar
eb4a22724f
possibly fix admin socket getnodeinfo
2021-05-16 15:55:30 -05:00
Arceliar
fad071ffe9
WIP on nodeinfo admin handler
2021-05-16 15:27:51 -05:00
Neil Alexander
058dec0cca
Fix getself, gettuntap etc
2021-05-16 21:01:59 +01:00
Neil Alexander
31c1c9b586
Fix admin socket list
2021-05-16 20:53:40 +01:00
Neil Alexander
6413e95c48
Fix bug
2021-05-16 20:05:22 +01:00
Neil Alexander
62a13e87c4
Merge branch 'future' into cleanup
2021-05-16 20:02:28 +01:00
Neil Alexander
416eadbcff
Use uint64 for MTU for forward-compatibility
2021-05-16 20:00:45 +01:00
Arceliar
a6c254c87a
more nodeinfo WIP, still needs admin socket support
2021-05-16 14:00:37 -05:00
Arceliar
2e45e970c6
work-in-progress adding nodeinfo
2021-05-16 13:52:52 -05:00
Neil Alexander
2d01386d6e
Refactor admin socket, export request/response structs, remove types package
2021-05-16 19:51:09 +01:00
Arceliar
2c7b22db92
allow for multiple traffic types inside the session at the tuntap level, only implement typeSessionTraffic for now
2021-05-16 13:01:54 -05:00
Arceliar
dfca87ba80
start a reader to disard traffic if the tun is disabled
2021-05-15 16:44:56 -05:00
Arceliar
f61507238e
cleanup unused MTU code from tun keystore
2021-05-15 16:23:44 -05:00
Arceliar
5b00273dfc
move sessionfirewall into the tuntap. this needs testing. the name is also slightly wrong, since a crypto session can still be set up, packets are just accepted/rejected at the tun/tap level instead
2021-05-15 15:55:47 -05:00
Arceliar
7e10025ef0
get minimal admin socket working (introspection only, no ability to add peers etc)
2021-05-15 15:16:35 -05:00
Arceliar
85fae23919
remove TunnelRouting from config, remove Signing from key names
2021-05-15 15:00:12 -05:00
Arceliar
e83b5d08a8
remove ckr
2021-05-15 14:54:25 -05:00
Arceliar
cd4144f22b
add minimal src/yggdrasil/api.go functions inspect internal state
2021-05-15 14:50:56 -05:00
Arceliar
7d49b86456
set version to an obviously unstable value, fix peer address formatting in the connect/disconnect messages
2021-05-15 13:44:55 -05:00
Neil Alexander
577b7118ad
remove debug logging
2021-05-10 23:16:22 +01:00
Neil Alexander
815f2a2822
Respond with ICMPv6 Packet Too Big over network
2021-05-10 23:09:59 +01:00
Neil Alexander
57ea61b338
Remove reconfiguration on SIGHUP - it didn't work reliably anyway
2021-05-10 22:47:28 +01:00
Neil Alexander
e12c639c21
Remove obsolete switch options
2021-05-10 22:42:57 +01:00
Neil Alexander
05caf36f4e
Fix AllowedPublicKeys
2021-05-10 22:39:12 +01:00
Neil Alexander
c20b66f3b6
Metadata/version tweaks
2021-05-10 22:31:01 +01:00
Neil Alexander
bb92e61e68
Remove encryption public key options (they are now derived from ed25519 key conversion in IW), also bump link version number
2021-05-10 22:06:38 +01:00
Arceliar
b48962a69a
limit MTU to no more than what the packetconn claims to support
2021-05-09 11:27:37 -05:00
Arceliar
3bfd891fd4
reduce time keystore mutex is held and (apparently) fix a deadlock
2021-05-09 09:20:28 -05:00
Arceliar
ed85cf08f2
WIP close the ironwood PacketConn when shutting down
2021-05-08 12:31:26 -05:00
Arceliar
8bed79370b
(broken state) WIP, compiles and passes the netns ping test
2021-05-08 11:52:22 -05:00
Arceliar
b345806e3f
(broken state) more WIP (cleanup)
2021-05-08 11:35:04 -05:00
Arceliar
0f787364de
(broken state) more tuntap WIP to add out-of-band key lookup
2021-05-08 11:32:57 -05:00
Arceliar
5b22392c66
(broken state) more WIP on tuntap stuff
2021-05-08 11:14:50 -05:00
Arceliar
0cff56fcc1
(broken state) WIP on tuntap
2021-05-08 10:39:07 -05:00
Arceliar
f1c37f8440
(broken state) WIP rewriting core to use ironwood
2021-05-08 08:35:58 -05:00
Arceliar
ace7b43b6d
(broken state) WIP address migration
2021-05-08 07:25:53 -05:00
Arceliar
ae96148008
Merge branch 'pathfinder' of https://github.com/Arceliar/yggdrasil-go into future
2021-05-08 06:45:10 -05:00
Arceliar
6eb74a40e1
Merge pull request #751 from Arceliar/bugfix
...
Fix goroutine leak in link.go
2020-12-19 11:04:13 -06:00
Arceliar
78073429a2
Merge branch 'pathfinder' of https://github.com/Arceliar/yggdrasil-go into pathfinder
2020-12-19 06:03:59 -06:00
Arceliar
0ba2ad74fe
use source routes in the dht (when available)
2020-12-19 06:03:28 -06:00
Arceliar
a8810c7ee9
if the link handler exits early due to an existing connection, then have it return a channel to that connection which closes when the connection is closed, so we can choose to block on that to avoid spamming connection attempts with dial
2020-12-13 16:29:03 -06:00
Arceliar
1daf3e7bd7
remove link.go block on oldIntf if we already have a connection to the same node, this spams connections, so it's not a good long-term fix if that's where the goroutine leak is
2020-12-13 16:16:14 -06:00
Neil Alexander
b9f35c5530
Return ICMPv6 Destination Unreachable for unknown destinations ( #748 )
...
* Return ICMPv6 Destination Unreachable for unknown destinations
* Update go.mod/go.sum for yggdrasil-extras
* go mod tidy
2020-12-06 19:47:25 +00:00
Neil Alexander
cb3d8647de
Merge pull request #744 from octeep/master
...
Fix DefaultIfName for OpenBSD
2020-12-06 13:48:09 +00:00
Arceliar
df1239b054
attempting to debug/fix a possible goroutine leak
2020-11-25 02:44:13 -06:00
Arceliar
939ffb02f8
adjust when dht reqs are reset
2020-11-14 15:05:02 -06:00
octeep
04e890fcc3
Change DefaultIfName from "/dev/tun0" to "tun0"
...
Specifying the full path to the interface in OpenBSD would result in:
panic: Interface name must be tun[0-9]*
Therefore, DefaultIfName should be changed to tun0 in order to make yggdrasil work out of the box.
2020-11-13 06:38:27 +00:00
Arceliar
428789f24c
simplify switch parent selection and minor source routing improvements
2020-11-09 19:01:11 -06:00
Arceliar
144d42c773
send dht responses via reverse path (fixes some possible DDoS issues with the old coord approach)
2020-11-08 06:09:55 -06:00
Arceliar
0ac203b007
adjust how sessions learn source routes, try to recover faster if coords change (but assume the old path still works until we get a ping through that gives us a new path)
2020-11-08 05:39:30 -06:00
Arceliar
e19e938f64
safer pathfinding behavior
2020-11-07 15:19:09 -06:00
Arceliar
994c26e5f7
simplify pathfinder
2020-11-07 12:08:01 -06:00
Arceliar
b5cd40b801
WIP very simple insecure proof-of-concept for pathfinding and source routing
2020-11-07 10:50:55 -06:00
Arceliar
e2521de94d
add path information to (protocol) traffic packets as they flow through the network, and a field for a reply path
2020-11-07 09:44:34 -06:00
Arceliar
36e4ce4b0b
WIP rough implementation of the source routed part of hybrid routing, does not work if coord length is too long (>127 hops)
2020-11-07 07:10:13 -06:00
Arceliar
92dbb48eda
add (but don't use) offset field for (protocol) traffic packets
2020-11-07 06:18:09 -06:00
Arceliar
1d1c6efa1f
attempt to keep TCP listener alive if there's a temporary error (e.g. too many open files), just pause and retry later
2020-10-18 11:01:18 -05:00
Arceliar
b6c894bc01
Merge branch 'future' of https://github.com/yggdrasil-network/yggdrasil-go into develop-future
2020-10-11 07:35:28 -05:00
Arceliar
afebc1f93d
Merge pull request #712 from Arceliar/bugfix
...
[future] possibly fix missing switch peer issue
2020-10-11 07:34:19 -05:00
Neil Alexander
fdb296047b
Merge branch 'future' into develop-future
2020-09-27 20:28:26 +01:00
Ryan Westlund
d6d2d9c19a
Accept some golint suggestions ( #690 )
...
* Fixed some linter issues
* Simplified isBetter method
* Accept some linter suggestions
* Fix typo
Co-authored-by: klesomik <klesomiks@gmail.com>
Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>
2020-09-27 14:42:46 +01:00
Neil Alexander
48bf0ce210
Revert "Fix build"
...
This reverts commit e09ca6a089
.
2020-09-27 13:28:13 +01:00
Neil Alexander
e09ca6a089
Fix build
2020-09-27 13:26:37 +01:00
Ryan Westlund
fcb6f5ca36
Set default conf file on FreeBSD to /usr/local/etc/yggdrasil.conf ( #717 )
2020-09-27 13:22:49 +01:00
Arceliar
33e3679458
multicast, use the prebuilt interface map when checking active listeners ( #707 )
2020-09-27 13:16:51 +01:00
Neil Alexander
d9fd68f18c
Fix build
2020-07-06 14:21:28 +01:00
Neil Alexander
a4a346c498
Merge branch 'develop' into future
2020-07-06 14:16:38 +01:00
George
48f008a8e2
Implement Core.RemovePeer method ( #699 ) ( #709 )
...
Co-authored-by: George <zhoreeq@users.noreply.github.com>
2020-07-06 14:14:34 +01:00
Arceliar
3fded209df
try to fix some possible races with how peers are added/removed and how they're blocked in the switch when they enter a bad state
2020-06-06 12:30:54 -05:00
Arceliar
aec82d7a39
Merge pull request #702 from Arceliar/switch
...
Precompute more for the switch lookup table
2020-05-30 18:39:43 -05:00
Arceliar
a1856258a9
Merge pull request #704 from Arceliar/queues
...
Faster queue logic
2020-05-30 18:39:33 -05:00
Arceliar
35e7542889
Merge pull request #706 from Arceliar/buffers
...
More buffer fine-tuning
2020-05-30 18:39:24 -05:00
Arceliar
c83b070c69
remove old switch lookup functions
2020-05-30 13:12:49 -05:00
Arceliar
0f28862e99
remove unused sequence number from switch
2020-05-30 10:48:59 -05:00