Commit Graph

177 Commits (a4bd7806b3ee51b64315287da60b235a83decbf0)

Author SHA1 Message Date
Jeff Becker 174e1b247b
fix latency tests.
* do FEC for latency tests so if we fail one test it doesn't kill the entire path
* ignore FEC'd responses on latency tests
* track latency history and report the mean latency instead of just the last sample
3 years ago
Jeff Becker b1afe0f596
always do path tests
this reverts some stupid bullshit that broke 0.9.0
3 years ago
Jeff Becker f69ccb73a8
limit path reanimation
* wait for a limited time for dead paths to reanimate and then remove them after that forever
3 years ago
Jeff Becker 6b115913bc
lokinetmon updates
* add country flags to lokinetmon
* expose hop ip addresses via rpc introspection for geoip in lokinetmon
3 years ago
Jeff Becker 545021aa3d
temp commit 3 years ago
Jeff Becker 2e8f47a7fa
various cleanups 3 years ago
Jeff Becker 5b05d22bad
refactors
* add path sequence numbers on routing messages
* reduce log level in debug mode
* wire up loopback style sending to ourself
3 years ago
Jeff Becker 59c9e997f2
build paths faster and limit path builds at edge router instead of via a time counter for all edges 3 years ago
Jeff Becker 59891d5d5f
wire up snode traffic to quic 3 years ago
Jeff Becker 7a1ffc2df4
* lessen replay filter window
* dont have transit hops use a replay filter
* formatting
3 years ago
Thomas Winget 7caa87862e standardize include format and pragma once
All #ifndef guards on headers have been removed, I think,
in favor of #pragma once

Headers are now included as `#include "filename"` if the included file
resides in the same directory as the file including it, or any
subdirectory therein.  Otherwise they are included as
`#include <project/top/dir/relative/path/filename>`

The above does not include system/os headers.
3 years ago
Jason Rhinelander 91d6698a9d Reformat with clang-format-11 3 years ago
Jason Rhinelander c4559d158e Make format 3 years ago
Jason Rhinelander ccc7b5c9e9 Merge Logic functions into EventLoop
loop->call(...) is similar to the old logic->Call(...), but is smart
about the current thread: if called from within the event loop it simply
runs the argument directly, otherwise it queues it.

Similarly most of the other event loop calls are also now thread-aware:
for example, `call_later(...)` can queue the job directly when called if
in the event loop rather than having to double-queue through the even
loop (once to call, then inside the call to initiate the time).
3 years ago
Jeff Becker f4971a88fd
use lokimq workers instead of llarp:🧵:ThreadPool 4 years ago
Jeff Becker 25a4bbd5ca
use std::swap 4 years ago
Jeff Becker 382e4215a8
path testing interval increase to reduce bandwidth use 4 years ago
Jeff Becker 00143e63f4
put replay filters on transit hops to reduce retransmissions. 4 years ago
Jason Rhinelander 3bb24580a4 make format 4 years ago
Jason Rhinelander ebd2142114 Don't use std::optional::value() because f u macos
This replaces all use of std::optional's `opt.value()` with `*opt`
because macOS is great and the ghost of Steve Jobs says that actually
supporting std::optional's value() method is not for chumps before macOS
10.14.  So don't use it because Apple is great.

Pretty much all of our use of it actually is done better with operator*
anyway (since operator* doesn't do a check that the optional has a
value).

Also replaced *most* of the `has_value()` calls with direct bool
context, except for one in the config section which looked really
confusing at a glance without a has_value().
4 years ago
Jason Rhinelander 1697bf90fe C++17
Compiles with C++17, replaces ghc::filesystem with std::filesystem,
nonstd::optional with std::optional, and llarp::string_view with
std::string_view.
4 years ago
Stephen Shelton 273270916e
The Great Wall of Blame
This commit reflects changes to clang-format rules. Unfortunately,
these rule changes create a massive change to the codebase, which
causes an apparent rewrite of git history.

Git blame's --ignore-rev flag can be used to ignore this commit when
attempting to `git blame` some code.
4 years ago
Stephen Shelton 4c6be3c8d1
Add PathBuildRejectedEvent to RouterHive 4 years ago
Stephen Shelton f61cd1a7da
Add some notes/comments about DHT message handling 4 years ago
Jeff Becker fdcd19662f
remove trailing "ms" 4 years ago
Jeff Becker bf0416cab8
remove Time_t, add operator overload for printing llarp_time_t and add to_json function for serializing llarp_time_t to json 4 years ago
Jeff Becker d2d109e92c
llarp_time_t is now using std::chrono 4 years ago
Jeff Becker f4520ac920
make decaying hashset use llarp::Time_t and move unit tests to use catch2 4 years ago
Jason Rhinelander 089056ca5b Remove all ABSL_ATTRIBUTE_UNUSED uses 4 years ago
Stephen Shelton ea97a8f2ac
Make format 4 years ago
Thomas Winget 145efaf0bb should probably build before committing... 4 years ago
Thomas Winget ad3465ee66 std move better 4 years ago
Thomas Winget 893ef2b874 const-y-ness and move-y-ness 4 years ago
Thomas Winget fc56a018e5 path builder prints hops, rest print short name 4 years ago
Jason Rhinelander ac1486d0be Replace absl::optional with optional-lite
Step 1 of removing abseil from lokinet.

For the most part this is a drop-in replacement, but there are also a
few changes here to the JSONRPC layer that were needed to work around
current gcc 10 dev snapshot:

- JSONRPC returns a json now instead of an optional<json>.  It doesn't
  make any sense to have a json rpc call that just closes the connection
  with returning anything.  Invoked functions can return a null (default
  constructed) result now if they don't have anything to return (such a
  null value won't be added as "result").
4 years ago
Jeff Becker e35d17764a * add path::Path::UniqueEndpointSet_t
* start using check2 for new unit tests
* unit test for path::Path::UniqueEndpointSet_t
4 years ago
Jeff Becker 7374f8f0fd
update lokinetmon 4 years ago
Jeff Becker e8b84fcfbd
add path speed metrics for lokinetmon 4 years ago
Jeff Becker 9214ecbc48
rename bloomfilter to replayfilter 5 years ago
Jeff Becker a7a101e33c
more intellegent path failure profiling using LRSM 5 years ago
Jeff Becker 73e07ef2d0
client side replay filter 5 years ago
Jeff Becker 56dce90de9
add trace log level for tracking logic thread jobs 5 years ago
Thomas Winget 17de3f2478 do...while; make format; remove erroneous GUARDED_BY 5 years ago
Thomas Winget 75512b1b58 ban zero id for pathid; clarity and cleanup 5 years ago
Jeff Becker 7ee026fa50
make path builds work again 5 years ago
Jeff Becker 7c35b00f98
Revert "move calling of path build sccess hook to correct place"
This reverts commit 902cd86a3b.
5 years ago
Jeff Becker 902cd86a3b
move calling of path build sccess hook to correct place 5 years ago
Jeff Becker 9d266dbec7
meh 5 years ago
Jeff Becker 327c545530
finish multithread cryptography first pass 5 years ago
jeff 14c9ef15ed try calling stuff in logic thread from event loop 5 years ago
Jeff Becker 4bf6882c8a
more async cryptography 5 years ago
Michael edd0ec398f
Move thread stuff to subdirectory 5 years ago
Michael 094b697b01
Replace StatusObject with underlying JSON type 5 years ago
Michael 16cdfbd5f0
clang-tidy modernize pass 5 years ago
Michael 84601fa474
Make format 5 years ago
Michael c429f0cec9
Jeff's fixes 5 years ago
Michael 4763888d2c
Add fail-able docker build for gcc trunk 5 years ago
Jeff Becker aa0a795689
call path build fail stuff in logic thread 5 years ago
Jeff Becker db2206664a
fix crashes in testnet 5 years ago
Thomas Winget 38fd0552d3 Adds Link-Relay Status Messages
Success case:
  - the path endpoint creates and sends a LR_StatusMessage upon
    successful path creation

Failure case:
  - an intermediate hop creates and sends a LR_StatusMessage upon
    failure to forward the path to the next hop for any reason

Both cases:
  - transit hops receive LR_StatusMessages and add a frame
    to them reflecting their "status" with respect to that path
  - the path creator receives LR_StatusMessages and decrypts/parses
    the LR_StatusRecord frames from the path hops.  If all is good,
    the Path does as it would when receiving a PathConfirmMessage.
    If not, the Path marks the new path as failed.

LR_StatusMessage is now used/sent in place of PathConfirmMessage
5 years ago
Thomas Winget bbb5339b33 add debug-level log message on path build success 5 years ago
Michael be997020dd
Fixup two minor warnings 5 years ago
Michael 488695047f
Remove redundant else blocks 5 years ago
Michael 08609f9e5a
Rename message files 5 years ago
Michael 8a058fcb34
Move other messages 5 years ago
Michael 83bd9227a7
Move exit messages 5 years ago
Michael d6751e3eeb
Move subset of messages to right directory 5 years ago
Michael b89689fec3
Refactor path build code 5 years ago
Rick V c6c31efec9
make format 5 years ago
Jeff Becker 9ea13a9ee3
ingore paths that drop exit traffic 5 years ago
Jeff Becker 762a0c534f
Merge remote-tracking branch 'origin/master' 5 years ago
Michael 491fee206b
Port code to use CryptoManager over passing Crypto pointers 5 years ago
Jeff Becker 2897141036
make format and introduce new function EnsureRouter on router to check nodedb or do dht lookup 5 years ago
Jeff Becker a375f1103f
explicitly lookup router if not connected to it on LRCM forward. 5 years ago
Jeff Becker 64c7ed42fc
make format 5 years ago
Jeff Becker 9c96aecf3f
move llarp::Logic to std::shared_ptr
add sequence numbers to HSD messages

begin work on network isolation code

add more docs
5 years ago
Jeff Becker f832c9a593
use shared_ptr 5 years ago
Jeff 06f8bb2f42 add blacklist-snode option 5 years ago
Jeff Becker 744ebac579
only use ready paths 5 years ago
Jeff Becker 34533db620
add urgent build that builds over an existing path for an endpoint 5 years ago
Jeff Becker 5fa85acaf7
rebuild exit paths if they die 5 years ago
Jeff Becker d50b18d7b0
try fixing leak also make format 5 years ago
Jeff 01906c5d94 Merge remote-tracking branch 'origin/master' 5 years ago
Michael 0b4d787042
More work on router docker image
- Multi-stage docker build (final image only 15MB!)
- Build in release mode
    - Fix bug with release mode
    - Fix compiler being dumb AF
    - Disable FORTIFY for now
- Enable LTO when making a staticly linked release
- Fix some gcc specific warnings
- Refactor cmake stuff into multiple files
5 years ago
Michael 9ee525a006
Fix shadowing warnings 5 years ago
Jeff Becker 6711296b26
finish converting to shared_ptr 5 years ago
Jeff Becker 99c29cf05a
prepare for ios/android jazz
move to use std::shared_ptr instead of bare pointers so we can
multithread everything.
5 years ago
Jeff Becker 5872573e91
rename Logic and Crypto functions to GetLogic and GetCrypto 5 years ago
Jeff Becker a2912ff860
Merge remote-tracking branch 'origin/master' 5 years ago
Jeff Becker d5162c2aad
dont kill active exit paths 5 years ago
Michael e33a33635c
Remove usage of raw new from service classes 5 years ago
Jeff Becker 3a8cb0bfb5
add shell based hooks for service::Endpoint, also make format 5 years ago
Jeff 7a83f71713 re-animate paths 5 years ago
Jeff Becker 04a5db8789
call hook 5 years ago
Jeff Becker c910a2a2fb
more 5 years ago
Jeff Becker 24e7151ff5
log and don't remove path on died 5 years ago
Jeff Becker b849ff9a94
handle path death better 5 years ago
Jeff Becker fcdef8d363
don't mark paths as dead after established 5 years ago
Jeff Becker d4cb6808ec
more 5 years ago
Jeff Becker ce126166af
more logging info 5 years ago