Commit Graph

1005 Commits

Author SHA1 Message Date
Thomas Winget
74e7f14db9 minor style/naming changes 2024-01-31 07:54:12 -08:00
Thomas Winget
f6594a33bc Remove find/lookup router
We're removing the notion of find/lookup a singular RC, so this gets rid
of all functions which did that and replaces their usages with something
sensible.
2024-01-31 07:54:12 -08:00
Thomas Winget
7fdecef9b3 messages::status -> messages 2024-01-31 07:54:12 -08:00
Thomas Winget
f995b30348 preconstructed dicts for error/timeout/ok
also move messages' statuses into their own namespace
2024-01-31 07:54:12 -08:00
Jason Rhinelander
957280e628 Delete llarp::util::memFn
It's unnecessary abstraction that barely simplifies anything, and is now
only used in one single place anyway, which is easily replaced with a
(unabstracted) lambda.
2024-01-31 07:54:12 -08:00
Thomas Winget
04e9fd559c build fixes, clang-format, minor touch-ups 2024-01-31 07:54:12 -08:00
Thomas Winget
657214992b chahca nonce size is 24 bytes
Lots of code was using 32-byte nonces for xchacha20 symmetric
encryption, but this just means 8 extra bytes per packet wasted as
chacha is only using the first 24 bytes of that nonce anyway.

Changing this resulted in a lot of dead/dying code breaking, so this
commit also removes a lot of that (and comments a couple places with
TODO instead)

Also nounce -> nonce where it came up.
2024-01-31 07:54:12 -08:00
Thomas Winget
2bea5e7823 path control message response status changes
change path control message inner message response to take just a
string, which will be a bt-encoded response with an early key for
status.  If there is a timeout we pass a bt dict that only has that as
the status, else the response we de-onioned should have either an OK
status or some other error.

change messages to use new status key

correctly call Path::EnterState on path build response
2024-01-31 07:54:12 -08:00
Thomas Winget
62a88b3cea omit breaking RC stuff pending refactor
It seems RC refactor will obviate the need for a "get individual RC"
method, so this comments out some usage of that to sidestep build
errors, rather than correcting them in a way that will just be wasted.
2024-01-31 07:54:12 -08:00
Thomas Winget
bf2665bbe7 path control messages and onioning fleshed out
- control messages can be sent along a path
- the path owner onion-encrypts the "inner" message for each hop in the
  path
- relays on the path will onion the payload in both directions, such
  that the terminal relay will get the plaintext "inner" message and the
  client will get the plaintext "response" to that.
- control messages have (mostly, see below) been changed to be invokable
  either over a path or directly to a relay, as appropriate.

TODO:
  - exit messages need looked at, so they have not yet been changed for
    this
  - path transfer messages (traffic from client to client over 2 paths
    with a shared "pivot") are not yet implemented
2024-01-31 07:54:12 -08:00
dr7ana
c149651d64 A soothing re-nomenclatura 2024-01-31 07:54:12 -08:00
dr7ana
47bedfd8da Review fixes + misc fixes 2024-01-31 07:54:12 -08:00
Jason Rhinelander
0de50b176b Untangle Endpoint::LookupServiceAsync
- .snodes don't need to support SRV records, so remove that
- untangle the mess of captured lambdas capturing other lambdas
  capturing other lambdas; we still need a chain of nested lambdas
  because we have a chain of callbacked events, but hiding the nesting
  by capturing them in other lambdas didn't improve anything.
2024-01-31 07:54:12 -08:00
dr7ana
68e67c881b {Remote,Local}RC's
- RemoteRC supplants most of the functionality throughout the code of RouterContact
- Next step will be to sort out CI issues, then see if we can get rid of either LocalRC (and therefore RouterContact entirely)
2024-01-31 07:54:12 -08:00
dr7ana
632f4ee70b RC refactor layout
- Local and Remote RC's now implemented with discrete functionalities and uses
2024-01-31 07:54:12 -08:00
Jason Rhinelander
b909f537fe Default libcrypt to whether or not we find it
Also deliberately don't provide the function at all if we aren't
compiled with libcrypt so that we can't link if we try to call it when
not available.
2024-01-31 07:54:12 -08:00
dr7ana
57393ea740 Review fixes
- cleaned up include-what-you-use errors (mostly quoted includes)
- misc fixes
2024-01-31 07:54:12 -08:00
dr7ana
f574cd798f Clang format include sorting + CMake
- includes are now sorted in consistent, logical order; first step in an attempt to fix the tomfoolery (no relation to Tom) brought in by include-what-you-use
- shuffled around some cmake linking to simplify dependency graph
- superfluous files removed
2024-01-31 07:54:12 -08:00
dr7ana
12a89328fe Cmake restructuring 2024-01-31 07:54:12 -08:00
Jason Rhinelander
b597ae5a94 "Refactor" aka delete Crypto/CryptoManager
- Get rid of CryptoManager.
- Get rid of Crypto.
- Move all the Crypto instance methods to llarp::crypto functions.
  (None of them needed to be methods at all, so this is simple).
- Move sodium/ntru initialization into static initialization.
- Add llarp::csrng, which is an available llarp::CSRNG instance which is
  a bit easier than needing to construct a `CSRNG rng{};` in various
  places.
- Various related small simplifications/cleanups.
2024-01-31 07:54:12 -08:00
dr7ana
c0b19de963 Review commit 2024-01-31 07:54:12 -08:00
dr7ana
66ec886480 Compilation fixes
- almost all errors have been commented out for refactor or already refactored
- committing this prior to sorting out the cmake structure
- upcoming include-what-you-use application
2024-01-31 07:54:12 -08:00
dr7ana
88fd0852db Outbound context absorbed sendcontex
- message transmission routed through refactored handling
- still work to be done, but now to make it compile at least
2024-01-31 07:54:12 -08:00
dr7ana
6338f3b3cd introset and message transmission underway
- message handling through classes that inherit from PathSet
- cleanups around link_manager
- etc etc
2024-01-31 07:54:12 -08:00
dr7ana
e4315cdc69 More message handling underway 2023-10-16 11:05:07 -07:00
dr7ana
a6f901a3a9 RIP everything 2023-10-12 13:37:45 -07:00
dr7ana
5ccec24470 callsafe
- Added call_get to ev.hpp to queue event loop operations w/ a return value
- de-mutexed NodeDB and made all operations via event loop. Some calls to NodeDB methods (like ::put_if_newer) were wrapped in call->get's, but some weren't. All function bodies were using mutex locks
2023-10-12 06:43:18 -07:00
dr7ana
c8dae875b5 Path routing partially implementing
- Reworking how paths to services and snodes
- pushing for Tom to rebase for path handling
2023-10-11 14:17:11 -07:00
dr7ana
bd81357f62 Path message transmission
- implementing DHT message transmission methods and surrounding functionalities across paths
2023-10-10 13:50:04 -07:00
dr7ana
4ed6a01e02 following up before Tom meeting 2023-10-04 07:12:16 -07:00
dr7ana
206bd0b85e wawaweewa 2023-10-03 13:11:51 -07:00
dr7ana
1a9f977208 Message method implementation continued
- tons of surrounding stupid refactoring required
2023-10-03 13:00:32 -07:00
dr7ana
d9ead7d0f6 crypto and message encoding
- libsodium calls streamlined and moved away from stupid typedefs
- buffer handling taken away from buffer_t and towards ustrings and strings
- lots of stuff deleted
- team is working well
- re-implementing message handling in proper link_manager methods
2023-09-29 10:29:05 -07:00
dr7ana
ae319091d6 libquic bump 2023-09-26 10:55:03 -07:00
dr7ana
a3e6cec7e7 Address type migration + libquic bump
- llarp/router/router.hpp, route_poker, and platform code moved to libquic Address types
- implementing required methods in link_manager for connection establishment
- coming along nicely
2023-09-19 13:15:59 -07:00
dr7ana
aaf688cf81 Deleted a lot
- RIP llarp/iwp/* and most of llarp/link
2023-09-15 14:15:03 -07:00
dr7ana
11e54f6552 More message refactoring
- routing messages and surrounding code
- shim code in place for iteration and optimization after deciding what to do with buffer, string handling, and subsequent function calls
2023-08-31 09:28:16 -07:00
dr7ana
a921575c55 mein gott 2023-08-30 12:25:47 -07:00
dan
b2e8cde64b working new endpoints
- added hotswap functionality
- map_exit and unmap_exit working
2023-02-01 15:52:37 -08:00
Jeff Becker
02b392881b add llarp::service::Endpoint::map_exit 2023-02-01 15:52:30 -08:00
dan
13b01c86a6 Updated RpcServer Initialization and Logic
-- Moved all RPCServer initialization logic to rpcserver constructor
    -- Fixed config logic, fxn binding to rpc address, fxn adding rpc cats
    -- router hive failed CI/CD resulting from outdated reference to rpcBindAddr
    -- ipc socket as default hidden from windows (for now)
refactored config endpoint
    - added rpc call script (contrib/omq-rpc.py)
    - added new fxns to .ini config stuff
    - added delete .ini file functionality to config endpoint
    - added edge case control for config endpoint

add commented out line in clang-form for header reorg later
2023-01-24 06:50:46 -08:00
majestrate
29da2a9943
Update llarp/service/endpoint.cpp
Co-authored-by: Jason Rhinelander <jason@imaginary.ca>
2022-11-03 10:49:57 -04:00
Jeff Becker
e5efe793ca
llarp::service::Endpoint::ReadyToDoLookup()
previously we had a checking style function that passes in an optional
defaulting to nullopt as a micro optimzation, this makes the code
unnessarily obtuse.

simplify this by splitting up into 2 functions,
one for getting the unique endpoints and one for checking if the
number of them is above the minimum.

add overload for ReadyToDoLookup() that checks against constant but
can do more in the future if desired to reduce the burden on future contributors.
2022-11-03 10:00:44 -04:00
Thomas Winget
9960aed45c
stop-time debug statements 2022-11-01 11:06:01 -04:00
Jason Rhinelander
64cf268457
Fix crashes in wintun and windivert stopping
Fixes windows shutdown crashes:

- windivert wasn't handling an ERROR_NO_DATA, which it gets when
  finished handling everything after a shutdown.
- wintun ReadPacket still gets invoked after end_session is called, but
  shouldn't be.  This adds an atomic<bool> to early return.
- fixes up some settings we send for windows service manager notify
2022-11-01 11:05:58 -04:00
Thomas Winget
1231d4e6c4 add 'networkReady' to endpoint status 2022-10-24 20:46:00 -04:00
Jeff Becker
bd5da10885
fixes issue #2029
when read/writing a .loki privkey file we dont rewind a llarp_buffer_t
after use. this is an argument in favor of just removing that type
from the code entirely.

fixes by using 2 distinct locally scoped llarp_buffer_t, one for read,
one for write.
2022-10-24 14:10:52 -04:00
Jason Rhinelander
d011f8fb4a
Bump clang-format to 14 2022-10-20 19:53:52 -03:00
Jason Rhinelander
36792d4337
Fix multi-field < ordering
Lots and lots of places in the code had broken < operators because they
are returning something like:

    foo < other.foo or bar < other.bar;

but this breaks both the strict weak ordering requirements that are
required for the "Compare" requirement for things like
std::map/set/priority_queue.

For example:

    a = {.foo=1, .bar=3}
    b = {.foo=3, .bar=1}

does not have an ordering over a and b (both `a < b` and `b < a` are
satisfied at the same time).

This needs to be instead something like:

    foo < other.foo or (foo == other.foo and bar < other.bar)

but that's a bit clunkier, and it is easier to use std::tie for tuple's
built-in < comparison which does the right thing:

    std::tie(foo, bar) < std::tie(other.foo, other.bar)

(Initially I noticed this in SockAddr/sockaddr_in6, but upon further
investigation this extends to the major of multi-field `operator<`'s.)

This fixes it by using std::tie (or something similar) everywhere we are
doing multi-field inequalities.
2022-10-13 16:29:13 -03:00
Jason Rhinelander
d335527a70
Add binary file slurp/dump utility functions
We have basically this same bit of code in tons of places; consolidate
it into llarp::util::slurp_file/llarp::util::dump_file.

Also renames all the extra junk that crept into llarp/util/fs.hpp out of
there into llarp/util/file.hpp instead.
2022-10-05 16:34:32 -03:00