Commit Graph

5031 Commits (a42d1c1d9fee3c4da7c3f6a84f9f369a8fc93649)

Author SHA1 Message Date
Jason Rhinelander 98f2d02103 Untangle messy nested dependency tree
lokinet-cryptography depends on lokinet-base which depends on
lokinet-cryptography.

Fixed this but splitting lokinet-cryptography into the libntrup code
(which is what is really needed) and the llarp/crypto code (which isn't
needed for lokinet-base).
8 months ago
dr7ana e4315cdc69 More message handling underway 12 months ago
dr7ana 6b1e3fbbc0 Touched up path build message handling 12 months ago
dr7ana a6f901a3a9 RIP everything 12 months ago
dr7ana 577f5e61ea De-mutexing
- mutexes in nodedb and rc_lookup_handler removed
- implemented thread-safe queueing to event loop for previously locked accesses
12 months ago
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
12 months ago
dr7ana c8dae875b5 Path routing partially implementing
- Reworking how paths to services and snodes
- pushing for Tom to rebase for path handling
12 months ago
Thomas Winget 2cc02d7b60 handle path build requests, generate responses 12 months ago
dr7ana bd81357f62 Path message transmission
- implementing DHT message transmission methods and surrounding functionalities across paths
12 months ago
dr7ana 65bd224cf0 Exit endpoints implemented
- free standing functions in link_manager
- sign and serialize functionalities siloed in llarp/messages/exit.hpp
1 year ago
dr7ana 4ed6a01e02 following up before Tom meeting 1 year ago
Thomas Winget f35f7fe3f2 refactor path build message construction, no more async nonsense 1 year ago
dr7ana 206bd0b85e wawaweewa 1 year ago
dr7ana 1a9f977208 Message method implementation continued
- tons of surrounding stupid refactoring required
1 year ago
dr7ana ad007ff832 libquic/oxen-mq/oxenc version bumps 1 year ago
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
1 year ago
dr7ana ae319091d6 libquic bump 1 year ago
dr7ana d0c3837384 libquic bparser merged
- bumped version to latest main branch commit
- wired up callbacks to set RPC request stream on creation
- methods for I/O of control and data messages through link_manager
1 year ago
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
1 year ago
dr7ana bfa9629779 More carving + libquic bump
- bumped libquic to begin implementing dependent features on connection open/close signals
- more gutting of interface classes
1 year ago
dr7ana aaf688cf81 Deleted a lot
- RIP llarp/iwp/* and most of llarp/link
1 year ago
dr7ana fd527d612f Carving through llarp/link 1 year ago
dr7ana a4272c4503 Added span backport 1 year ago
dr7ana 7f8207d5d3 Nuked superfluous interface classes
RIP:
- i_link_manager
- i_outbound_message_handler
- i_gossiper
- i_outbound_session_maker
- i_rc_lookup_handler
1 year ago
dr7ana 821cbeaacf warnings_as_errors fixes 1 year ago
dr7ana 511c20cdb6 Message handling methods
- `::handle_message` is transposed; Rather than the message calling the method and taking a reference to the router, the router should have a handle_message method and take a reference to the message
- `::EndcodeBuffer` takes a string reference, to which the result of `::bt_encode()` is assigned
1 year ago
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
1 year ago
dr7ana a921575c55 mein gott 1 year ago
Thomas Winget e2e7ed3490 pass datagram data cb to endpoint ctor, not listen/connect
Still ngtcp2 link errors, but everything else seems to build.  Have not
checked tests; not likely they will build or be correct if broken.
1 year ago
Jason Rhinelander d92d95177d
ngtcp2 build fix
-std=c99 breaks ngtcp2's build -- it appears to depend on GNU extensions
when compiling on linux, so don't force compiler C extensions off.
1 year ago
Thomas Winget a44fdab460 LinkManager linker issues / explicit constructor 1 year ago
Jason Rhinelander c92facc15e
Minor cleanups 1 year ago
Jason Rhinelander 78f866347b
Remove unnecessary static_pointer_cast 1 year ago
Thomas Winget 99be31b72f compiles, but does not link 1 year ago
Thomas Winget 450121734a liblokinet compilation issues from implicit ngtcp2 version bump
Note: this is compilation-fixing only.  Behavior fixing will come later with combining
the earlier efforts on liblokinet with the new wire protocol changes.
1 year ago
dr7ana 0260da6bd9 cleaning up after tom 1 year ago
dr7ana 620f916e65 Bump oxen-libquic to latest PR's 1 year ago
Thomas Winget ab86318404 Partial implementation of libquic as wire protocol
TODO:

- set up all the callbacks for libquic

- define control message requests, responses, commands

- plug new control messages into lokinet (path creation, network state, etc)

- plug connection state changes (established, failed, closed, etc.) into lokinet

- lots of cleanup and miscellanea
1 year ago
dr7ana ad5055b85f cmake tweaks for redundant dependencies (WIP) 1 year ago
Thomas Winget 22ac3cd26e initial quic wire proto Endpoint skeleton 1 year ago
Thomas Winget 9b42a21ca2 initial quic wire proto Connection skeleton 1 year ago
dr7ana 9acac2c33e CI fixes
- oxen-logging updated to bump fmt version
- version bump oxen-logging to fix fmt version
- version bump oxen-mq to solve uniform distribution error
- misc errors introduced by above version bumps
- clang-format 14 -> 15
1 year ago
Jason Rhinelander ab606c48d4
Rename `add_braces` -> `ipv6_brackets`
"Braces" seemed misleading as usually that terms refers to `{}` rather
than `[]`, and also this only affects ipv6 addresses.
1 year ago
Jeff Becker fc050b3a09
fix issue #2179
when setting libunbound's upstream dns, we need to not pass in the square braces of an ipv6 address.
we also net udp handles have ipv6 address for the local ip.
1 year ago
GNU/LongYap 89c5c73be4
add #include <cstdint>
add #include <cstdint> to fix build error
1 year ago
Jason Rhinelander b48e8b23ea
Merge pull request #2106 from majestrate/fix-config-comment-typo-2023-01-05
fix typo in config comments
2 years ago
Jeff Becker d7d3a4e774
fix issue #2138
in rpc client, contention on a null lock happened.
fix this by making the sending of pings always done in the logic
thread. this is done by wrapping the lambda we made with EventLoop::make_caller()
2 years ago
Jason Rhinelander 366d0c1be9
Merge pull request #2128 from majestrate/oxend-defer-ping-2023-01-29
ping oxend after getting identity keys
2 years ago
dan 9bfe881a35 OMQ_Request handling logic change 2 years ago
dan b2e8cde64b working new endpoints
- added hotswap functionality
- map_exit and unmap_exit working
2 years ago
dan 0632e88de0 Make new header for json type conversions 2 years ago
Jeff Becker 02b392881b add llarp::service::Endpoint::map_exit 2 years ago
Jeff Becker 031e173f1a
ping oxend after getting identity keys
fixes #2125
2 years ago
dan d3e69fe3c5 added unmapexit and listexit endpoints 2 years ago
dan d37398a915 review comments 2 years ago
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
2 years ago
Jeff Becker c682247f87
fix typo in config comments
lokinetN -> lokitunN
2 years ago
Jeff Becker 2498a085db
rearrange cmake libraries
define relations and document them.
make responsibilies clear and consice.
2 years ago
Jeff Becker 4508c59cd3
redo includes to be consistent 2 years ago
drouhana 0edfe8ff83
IPC Socket Fixes (#2111)
* 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)
2 years ago
Thomas Winget fbfd70a35a Fix incorrect usage of oxen-logging syslog
Previously oxen-logging was erroneously hard-coded to use the target
"lokinet" for system logs.  Obviously this is wrong for anything else
which uses oxen-logging and the system log.  This changes our call to
add_sink to pass "lokinet" as the target rather than the config
filename, and updates oxen-logging to use that argument correctly.
2 years ago
dan dc7f3cee22 Replace cxxopts with CLI11
- Simiplifies CLI code for future modification
- filesystem library linked in cmake check_for_std_filesystem file
2 years ago
Jason Rhinelander 9929445970
Fix poll_block_hash being set in the wrong place 2 years ago
majestrate e1f1b8b1c7
Merge pull request #2066 from jagerman/another-obsolete-bs
Remove another obsolete bootstrap
2 years ago
majestrate 9edda9f101
Merge pull request #2055 from jagerman/fix-option-names
Fix missing option names, make [lokid]:rpc required
2 years ago
Thomas Winget 1e29465237 fix missing namespace 2 years ago
Thomas Winget c4c81cc9f8 I hate clang-format sometimes 2 years ago
Thomas Winget 3d71bbd1e4 log func should return a string instead 2 years ago
Thomas Winget d44ad497fd rvalue ref -> value 2 years ago
Thomas Winget 548ce5c3a2 invert packet direction on WINDIVERT_ADDRESS
We simply keep the WINDIVERT_ADDRESS struct given on recv, so when
using it for send we need to invert the direction (the Output bit)
2 years ago
Thomas Winget 5238c3f1a0 force windivert to recalc IP checksum 2 years ago
Thomas Winget 133cee0fd9 Remove obsolete/extraneous WouldLoop function
The DNS resolver code should not and can not be responsible for
preventing packet looping.
2 years ago
Thomas Winget a518e654c5 add much logging around dns and windivert 2 years ago
Jason Rhinelander e8d1361865
Remove another obsolete bootstrap
I found another defunct obsolete boostrap file on a few foundation
service nodes; this adds it to the list.
2 years ago
Jason Rhinelander f9db657f64
Make Default&Required or Required&Hidden compilation failures
Default & Required makes no sense: if we have a default it makes no
sense to make it required.  The previous behaviour when this was
specified was to force an (uncommented) value in the config with the
value, but this was only used in the test suite.

Required & Hidden makes no sense either: if it's required to be
specified we definitely don't want to hide it from the generated config
file.

These are now compile-time failures.
2 years ago
Jason Rhinelander 68bb74a95d
Make [lokid]:rpc setting required in SN mode
When running as a service node we can't do anything without a lokid rpc
URL, and we don't necessarily have a good default for it.

This makes it required so that we fail with an appropriate error message
(rather than connect timeouts) if it is not specified.
2 years ago
Jason Rhinelander c8ce78315d
Fix missing option names
At some point between 0.9.9 and 0.9.10 we removed the printing of option
names when a value doesn't have a default, but this means the config is
littered with things like:

    # This option sets the greater foo value.

with no actual option name printed out when there is no default.

This fixes it by always printing the option name in such a case, just
with an empty value, e.g.:

    # This option sets the greater foo value.
    #big-foo=
2 years ago
Thomas Winget bb14a7bd09
when in rome, remove duplicate includes 2 years ago
Jeff Becker 259114b51d
add omitted header
certain files needed to include either fstream and our shim for std::filesystem.
this includes fstream into our shim and includes this shim in places
that require fstream. this is done because some toolchains (cough
cough broke af arch linux amalgums) can have weird subsets of the
requirements of C++17 that overlap, except when they dont, denoted by
unknowable undisclosed circumstances.

this issue was reported by a user in the wild, and this fixes it.
2 years ago
majestrate 29da2a9943
Update llarp/service/endpoint.cpp
Co-authored-by: Jason Rhinelander <jason@imaginary.ca>
2 years ago
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.
2 years ago
Jeff Becker 3a8007cc3f
remove assert()
we_changed_our_state can accept the state we are in right now, so this
assert no longer is correct.
2 years ago
Jason Rhinelander 6a110a4f1b
RPC: fix "halt" command 2 years ago
Jason Rhinelander 40348b24e1
Fix crash on unbound cleanup
We need to make a copy here because (see comment).
2 years ago
Jason Rhinelander b8678a767e
Fix crashy race condition in shutdown
Query->Cancel() will remove the Query, but that introduces a race
condition where unbound may still try to invoke the callback (with a
no-longer-valid pointer) if we do it before the ub_ctx_delete call.

Move to it afterwards so that we only cancel things that unbound didn't
2 years ago
Jeff Becker 9aa6b64c1e
use std::shared_ptr for pending queries 2 years ago
Jason Rhinelander c7a133ac9c
windivert: avoid trying to send during shutdown
Occasionally during shutdown windivert will crash because a thread tries
sending after we've called wd::shutdown, which isn't allowed.  Add an
atomic bool to prevent this.
2 years ago
Jason Rhinelander cdc4c486c4
Add more stopping signals 2 years ago
Jason Rhinelander 2b5f1ee029
Remove bad assert
We do and should be able to call this multiple times during shutdown to
signal that we are advancing through shutdown.
2 years ago
Jason Rhinelander 3d429b353a
Don't raise log level on shutdown
If already below info (e.g. debug) it should stay there; we only want to
*lower* it to info if above info.
2 years ago
Thomas Winget 9960aed45c
stop-time debug statements 2 years ago
Jeff Becker 57b77fecb3
fix crash on shutdown
we were calling llarp::Context::HandleSignal from a non mainloop
thread when running as a win32 service. this caused issues with a non
clean destruction.

call our signal handler instead of llarp::Context::HandleSignal
2 years ago
Thomas Winget dceef0b21e
remove dead dns resolver code 2 years ago
Jason Rhinelander 4ad66ac2a5
Remove unused VERSION_STR constant 2 years ago
Jeff Becker 3b6cbec08e
fix typo in filename 2 years ago
majestrate 84834089d1
Update llarp/router/router.cpp
use `fmt::join` for lokinet version string in status

Co-authored-by: Jason Rhinelander <jason@imaginary.ca>
2 years ago
Jason Rhinelander 31c312ad41
Extend windows startup timeout
If wintun fails it seems to take about 15s, so extend the startup
timeout so that it can fail gracefully (and let us clean up before
exiting).

Also refactors the timeouts to chrono constants.
2 years ago
Jason Rhinelander 71bea4f0fc
Add networkReady to stats result 2 years ago
Jason Rhinelander 5c12110e93
Add some more debugging 2 years ago
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
2 years ago