Jeff
33a2226079
footcannon prevention: check for invalid address family.
...
throw if we pass in a bogus af value when getting a sockaddr for all interfaces
2 years ago
Jeff
98b3860655
set source ip on service nodes for outbound link to not use all interfaces
2 years ago
Jeff
60ada470db
format systemd status as time deltas from now
2 years ago
Jeff
18e1272c76
add gossip info to systemd status
...
* adds next and last gossip datetimes
* adds a few things for time points, like ostream operator overloads for time point
2 years ago
Jeff
3c44a06403
publish our rc out to the network when we regenerate them
2 years ago
Jeff
5f496259b7
if we are decommissioned or deregistered, do not test other routers so we do not spam them.
...
disambiguiate error message to distinguish between decomissioned and deregistered.
2 years ago
Jeff
706e34c082
connect to routers even if we are decomissioned
2 years ago
Jeff
a61e9636b2
state machine fix for link layer
...
if a pending inbound session did not complete a handshake after an unclean close from a previous session the
remote udp endpoint would remain stuck mapped as authed and thus any further attempts from the remote would
be silently dropped as it entered a stuck state in the state machine. this was happening as a small part
of the state machine was hidden in the implementation details of iwp, but instead should be in the super type
as it is logic exclusively outside the details which every dialect would have regardless of its details.
this commit will unmap the udp endpoint every time it needs to in the link layer state machine, independat of
the implementation details of the diact.
2 years ago
Jeff
3fccb3ab0c
fixup edge case on windows
...
* add platform detection constexprs
* add quark for platforms without native ipv6 like windows, exit mapping cannot work with ipv6 yet
2 years ago
Jeff
f0867832e5
alignas
2 years ago
Jeff
70b07bab44
clean up ip packet code
2 years ago
majestrate
d30fe95f2e
use ::/0
...
makes us map all ranges not just ipv4 when exit mode is on by default.
2 years ago
Jeff
9556741f6a
split up link order for oxenmq and oxenc
...
* lokinet uberlib needs oxenc and oxenmq
* lokinet-util only needs oxenc
fixes #1911
2 years ago
majestrate
5b0ece3f9e
Update llarp/router/outbound_message_handler.cpp
...
add comment
Co-authored-by: Thomas Winget <tewinget@gmail.com>
2 years ago
majestrate
238c33f565
Update llarp/iwp/session.cpp
...
return
Co-authored-by: Thomas Winget <tewinget@gmail.com>
2 years ago
Jeff
26c8063fc9
convert priority queues
2 years ago
Jeff
14d75cc654
add util::ascending_priority_queue type
2 years ago
Jeff
8960ca08f3
propagate link layer message priority to link layer so it can order retransmissions with that in mind
2 years ago
Jeff
8aa465d0ed
randomize all frames in lrsm to prevent info leak about hop length
2 years ago
Jeff
926074f7c4
add idempotent pump after sending lrcm to very make sure that it is pumped
2 years ago
Jason Rhinelander
b09298e211
Replace llarp/util/endian.hpp with oxenc/endian.h
2 years ago
Jeff
64684d4dd4
dont require libcrypt for cross compiled builds
2 years ago
Jeff
7a8410b375
make more platforms ignore libcrypt
2 years ago
Jeff
ee12ba51d5
disable hashed auth on windows
2 years ago
Jeff
5050cd0299
add hashed password capability to endpoint auth by file
2 years ago
Jeff
a51576d1ea
make destructor virtual
2 years ago
Jeff
a082ba4e77
add file auth for tokens
2 years ago
Jeff
9a6bfe6013
static endpoint auth codes
2 years ago
Jeff
1a254a4301
kill/restore ipv6 with powershell because windows is vile
2 years ago
majestrate
d972b04fe0
Merge pull request #1891 from majestrate/idempotent-flush-path-builds-2022-04-12
...
idempotent flush queues on path builds
2 years ago
Jeff
9765eeee7e
handle edge case better
...
when our path is fine but the recipiant's path on the pivot router isn't we should pivot to another router
2 years ago
Jeff
768ed30c05
add public key in rpc ping
2 years ago
Jeff
3fbddac464
idempotent flush queues on path builds
3 years ago
Jeff
ffadcb2e93
clean up paths that are ignored and inactive
3 years ago
Jeff
af041cfee4
try not to spam builds
3 years ago
Jeff
38a157808e
Cache best paths determined by GetPathByRouter to reduce cpu usage
3 years ago
majestrate
1fc901330c
Merge pull request #1851 from majestrate/ci-docs-generation-2022-02-04
...
ci docs generation
3 years ago
Jeff
a76acd4956
fix wire protocol race condition
...
only send close packet once, before we were sending a close after we got a close causing excess log spam.
include handshake phase when checking for connection timeouts.
when we change our rc make sure to put it into nodedb too when we are a service node to prevent weirdness in dht lookups.
3 years ago
Jeff
b4c4c3977a
oxenc
3 years ago
Jeff
eeb93343c0
rpc fixes for lokinet gui
...
only add stats for services when we have them
3 years ago
audric
41405be612
summary status: no services means not running
3 years ago
Audric Ackermann
ad6d206aa6
add version and uptime to summary status endpoint
3 years ago
Jeff
6bb438ca33
make comments with colins in them not have them in it
3 years ago
majestrate
8a849e81df
Merge pull request #1858 from jagerman/omq-11
...
Crank oxen-mq to (1.2.)11; switch to oxen-encoding
3 years ago
Jason Rhinelander
d02558350a
Crank oxen-mq to (1.2.)11; switch to oxen-encoding
...
- Update oxen-mq submodule to latest stable
- Add oxen-encoding submodule
- Convert all oxenmq encoding usage to oxenc
- Modernize cmake handling of oxenmq/oxenc
3 years ago
majestrate
f8b6b9d34b
Merge pull request #1856 from Bilb/fix-num-path-built-summary-status
...
fix numPaths value in Router::ExtractSummaryStatus
3 years ago
Audric Ackermann
d9467f4dee
fix numPaths value in Router::ExtractSummaryStatus
3 years ago
Jeff
ac9fb9d479
use quad nine as default upstream dns
3 years ago
Jeff
810e3cc9c2
dont capture flow_addr, results in compiler error on sid
3 years ago
majestrate
838183e36e
Merge pull request #1748 from majestrate/liblokinet-udp-api-2021-09-19
...
liblokinet updates
3 years ago
Jeff
582fdeda27
add close_reason parameter to quic::Endpoint::close_connection defaulting to emtpy string
3 years ago
Jeff
95efe8f4e5
bump ngtcp2 to v0.1.0 tag
3 years ago
Jeff Becker
04b23416ed
do less allocations in lokinet_hex_tobase32z
3 years ago
Jeff Becker
743bc2433a
resolve race condition in udp flow and packet handling
3 years ago
Jeff Becker
635f4bcd8c
make it compile
3 years ago
Jeff Becker
5286d442fb
updates:
...
* add udptest example
* fix up udp codepath in liblokinet
3 years ago
Jeff Becker
65b29a1b70
add liblokinet custom logger
3 years ago
Jeff Becker
f5157c31da
make it compile
3 years ago
Jeff Becker
b225ec1043
thread safety stuff
3 years ago
Jeff Becker
ba57ab04aa
wire up liblokient_udp_*
3 years ago
Jeff Becker
1c70b0f42f
add lokinet_hex_to_base32z
3 years ago
Jeff Becker
bbb082931a
more logging
3 years ago
Jeff Becker
66de680884
sanity check
3 years ago
Jeff Becker
8c8f97adda
more logging
3 years ago
Jeff Becker
38d4cec7d1
log errors on decoding
3 years ago
Jeff Becker
c5b5ff7810
typo fix
3 years ago
Jeff Becker
2428cc189e
llarp::BootstrapConfig update
...
* make routers member a llarp::BootstrapList
3 years ago
Jeff Becker
c4b1a9c074
lokinet_add_bootstrap_rc
...
* allow bootstrap lists to be passed in
3 years ago
Jeff
fc444741f1
move constant to new header
...
create llarp/constants/time.hpp for time/duration constants
3 years ago
Jeff
5fac6c84d8
detect timeskip and thaw network when we think it happened.
3 years ago
Jeff
38c6d99375
wire up sigusr1 to trigger a network thaw on non win32 platforms
3 years ago
majestrate
27619f5fb4
Merge pull request #1838 from majestrate/sd_notify_extra_info-2022-01-13
...
redo systemd status line
3 years ago
Jeff
b3d9cd463f
route poker: allow not blackholing routes.
...
allow runtime configuration to disable ip blackholing.
3 years ago
Jeff
205584acdf
redo systemd status line to include number of paths and endpoint count. optionally warn about low path success.
3 years ago
majestrate
2c44ffe85b
Update llarp/router/route_poker.cpp
...
Co-authored-by: Jason Rhinelander <jason@imaginary.ca>
3 years ago
Jeff
27ba3e044d
prevent segfault in route poker if Init() is not called
3 years ago
majestrate
9e4bd2cd44
Merge pull request #1801 from majestrate/introset-publish-spam-fix-2021-11-16
...
prevent introset publish spam
3 years ago
Jeff Becker
061aebc964
reword auto-routing config comment
3 years ago
Jeff Becker
14ffdb6639
configurable route poker
...
this allows you to use exit nodes without forcing routes over the interface, useful for using lokinet with an exit and selectively routing over the lokinet interface using an external socks proxy or binding to device explicitly.
* make route poker configurable, defaults to enabled but allows disabling it on runtime if desired
* add config option [network]:auto-routing to enable/disable route poker
3 years ago
Jeff Becker
da887dc559
implement exit node pooling, allows users to use multiple exits for an address range.
...
mappings per ip stick to the same exit, each new ip is mapped to a random exit in the specified pool.
make exit-auth multi value
3 years ago
Jeff
776e9227fd
make serivce::Endpoint::EnsurePathToService have a default timeout as a named constant.
3 years ago
Jeff
301b19bd0f
do not send buggy reply as rpc
3 years ago
Jeff
388fc53380
match io loop event order on windows/apple to match linux.
...
on win32/apple reading packets from the interface does not count as an io operation.
manually trigger pump on win32/apple to pretend that it is an io event.
add platform quark function MaybeWakeUpperLayers on vpn::Interface to manaully wake up the other components on platforms that need that (ones on which packet io is not done via io events).
on non linux platforms, use uv_prepare_t instead of uv_check_t as the former triggers before blocking for io, instead of after. this better matches linux's order of operations in libuv.
3 years ago
Jeff Becker
0e2b0edaf6
when lokinet looses ip4 connectivity libunbound used to freak out and only use ip6 after such an event.
...
as a result dns queries stop working because we blackhole ip6 routes if exit mode is on.
this prevents this case from being hit.
3 years ago
Jeff Becker
ec8d990163
demote log statement levels
3 years ago
Jeff Becker
172c2dec45
create new constexpr for the staleness window for introsets and use it in publishing introsets and intro selection
3 years ago
Jason Rhinelander
189c4bfba4
Also consider last publish; eliminate unwanted condition
...
We don't really carry about when the last regen was attempted, but
rather about when the last publish was attempted (or succeeded).
3 years ago
Jeff Becker
8ba03de44e
match timeouts in introset selection spread with logic for publishing
3 years ago
Jason Rhinelander
5115162066
Use libuv's cached current time for `time_now()`
...
We are calling time_now() a huge amount, and it is a major consumer of
CPU cycles, but we don't need it: most of the time the current event
loop time is enough.
3 years ago
Jason Rhinelander
b2ee003329
Optimization: eliminate unneeded shared_ptrs
...
We have a few cases where we're making an extra shared_ptr which we copy
into a lambda, which then results in an extra unnecessary refcount
decrement in the parent; this changes them to give an rvalue reference
to the lambda to avoid the extra incr/decr instead.
The one in Session::Pump is particularly noticeable and shows up in
profiling.
3 years ago
Jason Rhinelander
7a04911b9b
Avoid std::function in hot pump code
...
We're seeing overhead here of the std::function invocation, which we can
easily avoid in this case by not using a std::function around the
callback.
3 years ago
Jason Rhinelander
09c2b31b25
Move paths pumping into PumpLL
3 years ago
Jason Rhinelander
687b54f860
Abstract & simplify logic
3 years ago
Jason Rhinelander
711038d150
Remove debug comment
3 years ago
Jason Rhinelander
0fe7153f6e
Fix client latency bug; De-shared_ptr IHopHandler queues
...
- Replace m_FlushWakeup with a call to the router's god mode pump
method. m_FlushWakeup apparently isn't enough to get things out, and
we can end up with incoming packets that don't get properly handled
right away without it.
- The shared_ptr around the ihophandler queues isn't needed and is just
adding a layer of obfuscation; instead just exchange the list directly
into the lambda.
- Use std::exchange rather than swap
- A couple other small code cleanups.
3 years ago
Jason Rhinelander
70553c7627
Remove hopeless flush
...
The TriggerPump just below this is *already* going to trigger a flush,
so the extra flush call here can't do anything useful (and in
particular, it won't clear up the queue *immediately*, which is what
this code looks like it was aimed at doing).
3 years ago
Jason Rhinelander
fbc5cb0a6d
Add another missing pump trigger
3 years ago
Jason Rhinelander
bce7e2e56d
Pump outbound context
3 years ago
Jason Rhinelander
846577a0aa
Add missing inbound traffic pump trigger
3 years ago
Jason Rhinelander
8cdde74020
Simplify
3 years ago