Jason Rhinelander
3cd699fa7f
Show router pubkey at startup
2 years ago
Pebu
9db192079b
Update error message
...
Message is paths must be >= 2 but condition is checking for < 3
2 years ago
Jeff
4a10868f85
add additional fallback case
2 years ago
Jeff
e480e36f3d
generate windows rc for each executable target so we can set the executable name right for each one
2 years ago
Jeff
f05c2ebc71
macro removals
...
clean up version cmake stuff
clean up generated cpp version stuff
make all the windows rc stuff get generated by cmake
bump release motto message
properly inject release motto into version
2 years ago
Jeff
1eba0f836e
replace LLARP_PROTO_VERSION macro
2 years ago
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
2 years ago
Jeff
ffadcb2e93
clean up paths that are ignored and inactive
2 years ago
Jeff
af041cfee4
try not to spam builds
2 years ago
Jeff
38a157808e
Cache best paths determined by GetPathByRouter to reduce cpu usage
2 years ago
majestrate
1fc901330c
Merge pull request #1851 from majestrate/ci-docs-generation-2022-02-04
...
ci docs generation
2 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.
2 years ago
Jeff
b4c4c3977a
oxenc
2 years ago
Jeff
eeb93343c0
rpc fixes for lokinet gui
...
only add stats for services when we have them
2 years ago
audric
41405be612
summary status: no services means not running
2 years ago
Audric Ackermann
ad6d206aa6
add version and uptime to summary status endpoint
2 years ago
Jeff
6bb438ca33
make comments with colins in them not have them in it
2 years ago
majestrate
8a849e81df
Merge pull request #1858 from jagerman/omq-11
...
Crank oxen-mq to (1.2.)11; switch to oxen-encoding
2 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
2 years ago
majestrate
f8b6b9d34b
Merge pull request #1856 from Bilb/fix-num-path-built-summary-status
...
fix numPaths value in Router::ExtractSummaryStatus
2 years ago
Audric Ackermann
d9467f4dee
fix numPaths value in Router::ExtractSummaryStatus
2 years ago
Jeff
ac9fb9d479
use quad nine as default upstream dns
2 years ago
Jeff
810e3cc9c2
dont capture flow_addr, results in compiler error on sid
2 years ago
majestrate
838183e36e
Merge pull request #1748 from majestrate/liblokinet-udp-api-2021-09-19
...
liblokinet updates
2 years ago
Jeff
582fdeda27
add close_reason parameter to quic::Endpoint::close_connection defaulting to emtpy string
2 years ago
Jeff
95efe8f4e5
bump ngtcp2 to v0.1.0 tag
2 years ago
Jeff Becker
04b23416ed
do less allocations in lokinet_hex_tobase32z
2 years ago
Jeff Becker
743bc2433a
resolve race condition in udp flow and packet handling
2 years ago
Jeff Becker
635f4bcd8c
make it compile
2 years ago
Jeff Becker
5286d442fb
updates:
...
* add udptest example
* fix up udp codepath in liblokinet
2 years ago
Jeff Becker
65b29a1b70
add liblokinet custom logger
2 years ago
Jeff Becker
f5157c31da
make it compile
2 years ago
Jeff Becker
b225ec1043
thread safety stuff
2 years ago
Jeff Becker
ba57ab04aa
wire up liblokient_udp_*
2 years ago
Jeff Becker
1c70b0f42f
add lokinet_hex_to_base32z
2 years ago
Jeff Becker
bbb082931a
more logging
2 years ago
Jeff Becker
66de680884
sanity check
2 years ago
Jeff Becker
8c8f97adda
more logging
2 years ago
Jeff Becker
38d4cec7d1
log errors on decoding
2 years ago
Jeff Becker
c5b5ff7810
typo fix
2 years ago
Jeff Becker
2428cc189e
llarp::BootstrapConfig update
...
* make routers member a llarp::BootstrapList
2 years ago
Jeff Becker
c4b1a9c074
lokinet_add_bootstrap_rc
...
* allow bootstrap lists to be passed in
2 years ago
Jeff
fc444741f1
move constant to new header
...
create llarp/constants/time.hpp for time/duration constants
2 years ago
Jeff
5fac6c84d8
detect timeskip and thaw network when we think it happened.
2 years ago
Jeff
38c6d99375
wire up sigusr1 to trigger a network thaw on non win32 platforms
2 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
Jason Rhinelander
b3a8160c89
Pump hidden context sooner
...
This has to happen before pumping links because it is putting things on
links.
3 years ago
Jason Rhinelander
0924dd8862
Remove dead declaration
3 years ago
Jason Rhinelander
f9395cd5dd
Cleanup: avoid pointless copy of `this` pointer
3 years ago
Jason Rhinelander
9844d358e6
Fix packet delay creep
...
- Make the main PumpLL also pump hidden services, rather than using
separate wakers in each TunEndpoint. It seems there is some
interactions that just one or the other is not enough.
- Eliminate TunEndpoint send queue -- it isn't needed as we can just
send directly.
3 years ago
Jason Rhinelander
99b12940ad
Cleanups
3 years ago
Jason Rhinelander
e47d3098ac
Increase plaintext queue size from 32 to 512
...
In testing we were sometimes hitting a full queue error, which makes
sense because the queue size seems really small.
Increase it to 512.
3 years ago
Jason Rhinelander
78cc466bf2
Rename PumpLL -> TriggerPump
...
And rename the actual pump implementation back to PumpLL.
3 years ago
Jason Rhinelander
031ea7aa37
Get rid of external event loop direct wakeups
...
If something needs to wake up the event loop it should be using an
async, as we are now with PumpLL(); but we had various code triggering a
wakeup, expecting that PumpLL gets called on every wakeup, which isn't
true anymore.
3 years ago
Jason Rhinelander
74215fc44c
Fix link layer delivery race condition (fix random ping delays)
...
We trigger a pump immediately, but this is racey because we add to our
plaintext data in a worker thread; if the worker thread runs after the
pump then it ends up leaving plaintext to be handled, but there's no
wakeup until the next one.
This was the cause of seeing a random +1s and bunching added to ping
responses sometimes: it wasn't until the *next* ping goes through the
network that the plaintext queue gets processed, at which point it
flushes the old one and often the new one together.
The fix here gets rid of the map of sessions needing wakeups and instead
adds an atomic flag to all of them to let us figure out which ones
need to be flushed.
3 years ago
Jason Rhinelander
aa1dc83459
Simplify
3 years ago
Jason Rhinelander
362fda5a56
Combine empty + pop into single call
3 years ago
Jason Rhinelander
b03f3c2d79
Remove another unwanted unconditional PumpLL
3 years ago
Jason Rhinelander
9113a6b36b
Triggered pumping
...
This redoes how/when we pump so that we should only be calling the
idempotent PumpLL() when we actually have (or may have) something to
pump.
3 years ago
Jason Rhinelander
bfc6d35b33
Simplifications & C++17
...
- Modernize some iterator loops
- Simplify a couple places by using `if (init; ...)`
- Replace various std::binds with lambdas
3 years ago
Jason Rhinelander
41807f1763
transit hop: drop instead of flushing when full
...
If full happens we are going to trigger a bunch of flushes which
probably isn't very useful, so drop instead.
3 years ago
Jason Rhinelander
cf5c4e7284
outbound_message_handler: skip instead of aborting on removed paths
3 years ago
Jason Rhinelander
633431be66
Make outbound message queue PumpLL again if it doesn't send all
3 years ago
Jason Rhinelander
faf95cbd0a
Allow a nullptr callback for event loop PumpLL
3 years ago
Jeff Becker
8a9025e234
only pump path context in idempotent pumpll
3 years ago
Jeff Becker
bb86996acf
make event loop pump function non idempotent
3 years ago
Jeff Becker
8744c93944
prevent 100% cpu usage on service nodes
...
call_soon wakes up the mainloop and is often reentrant, we dont want to
ever way up the event loop but we also want to always defer the call so
we always use the workers
3 years ago
Jeff Becker
22d4b88edc
make PumpLL idempotent to reduce cpu use a bit
3 years ago
Jason Rhinelander
1ddfb7420a
Merge pull request #1791 from majestrate/exclude-failing-from-queue-2021-10-29
...
exclude fully failed nodes from service node testing list
3 years ago
Jason Rhinelander
0ec50e6624
Fix comment typo
3 years ago
Jeff Becker
fcba709fcb
do not requeue nodes for testing from failing queue if we do not have them marked as failing anymore
3 years ago
Jeff Becker
6c70022dcc
check for intersecting ip ranges correctly, add unit test
3 years ago
Jason Rhinelander
52492c6253
make format
3 years ago
Jason Rhinelander
1e22417ade
Add missing deprecated copy assignment operator
...
Clang-13 warns (and -Werror dies) without it.
3 years ago
Jason Rhinelander
50449038b4
Another gcc-11 fix
...
GCC is wrongly warning that `h` is uninitialized here, but it clearly
isn't. Work around it.
3 years ago
Sean
e11a94c95c
RPC call for summary get_status ( #1742 )
...
* RPC call for summary get_status
* lint
* update with review notes
* further review points
* uint64_t
3 years ago
Jason Rhinelander
0768593fa5
Merge pull request #1762 from majestrate/v6-base-address-configuration-fix-2021-10-06
...
catch ipv6 ioctl throwing when someone runs lokinet with no ipv6
3 years ago
Jeff
1846c3e3d8
prevent bizare half open state. ( #1754 )
...
* attempt path timeout bullshittery fix
* make sure ServiceInfo always has its address set up
* do not copy intros in constuctor, ammend logging and
add assert
3 years ago
Jeff Becker
937d07b6ce
catch ipv6 ioctl throwing when someone runs lokinet with no ipv6
3 years ago
Jeff Becker
5e9f9686e7
set base v6 address to nullopt when explicit empty string is provided
3 years ago
Jeff
24681fd35d
Merge pull request #1759 from majestrate/iterate-dir-in-order-2021-10-06
...
iterate through directory entries in lexigraphical order
3 years ago
Jeff
1d955cf28d
Update fs.hpp
...
style nit
3 years ago
Jeff Becker
00f81b1dac
iterate through directory entries in lexigraphical order
3 years ago
Jeff Becker
d882f1a302
some compilers hated [[maybe_unused]] so use (void) when they are unused
3 years ago
Jeff Becker
cf187ddffc
fix up logging, put _log into anonynous namespace, make only log trace nop in release builds
3 years ago
Jeff Becker
20814a4adc
use llarp:: prefix for LogError
3 years ago
Jeff Becker
1b06e263fb
update log statement for win32
3 years ago
Jeff Becker
2d5faccb9f
refactor for apple
3 years ago
Jeff Becker
7d07dea235
fix up gripes in source_location
...
* get rid of columns we dont need those
3 years ago
Jeff Becker
acdb8a19a6
for some reason [[maybe_unused]] is hated by buster 32 bit x86 so we do something else
...
to appease that compiler.
3 years ago