Stephen Shelton
aeb0c2be3a
Remove ability to stop routers from gossiping for now
4 years ago
Stephen Shelton
bdac43e19f
Peer stats test which artificially stops a router from gossiping its RC
4 years ago
Stephen Shelton
d1b629f494
RouterHive ConnectionAttemptEvent
4 years ago
Stephen Shelton
b2a72dd46a
Initial test_peer_stats hive test
4 years ago
Stephen Shelton
2453fff10b
Piggyback on link callbacks to add peer stats
4 years ago
Stephen Shelton
023e061146
Make [router]:enable-peer-stats only valid for client
4 years ago
Stephen Shelton
d897099e1d
Track traffic peerstats
4 years ago
Stephen Shelton
5e05defc76
Add API query for peer stats, other related fixes
4 years ago
Stephen Shelton
595288e046
Add PeerDb::handleGossipedRC
4 years ago
Stephen Shelton
2a30e7dac2
Add PeerDb to Router
4 years ago
Jeff Becker
80919a3b76
address feedback.
...
* use exceptions when fetching identity key instead of std::optional, will throw on fail
* fix up config options for endpoint auth and add better docs
* add llarp::serive::AuthType enum for controlling what kind of endpoint auth to use
4 years ago
Jason Rhinelander
a7c42ab2bd
Use lokimq's hex/base32z encoding/decoding
4 years ago
Jeff Becker
e13e886df9
fix up event loop crap so that unit tests pass
4 years ago
Jeff Becker
1779f33506
fix makefile fromat target
...
use lokimq::address instead of std::string or std::string_view
4 years ago
Jeff Becker
f4971a88fd
use lokimq workers instead of llarp: 🧵 :ThreadPool
4 years ago
Jeff Becker
be01808a6b
more
4 years ago
Jeff Becker
c5dbb670ca
set sane defaults for config, implement lmq rpc server, update lokinetmon
4 years ago
Jeff Becker
6bbf7beaf5
add stubs for lmq rpc server
4 years ago
Jeff Becker
1175a583d2
initial working code
4 years ago
Stephen Shelton
17026a0b21
Remove libabyss and rpc::Caller/rpc::Server
4 years ago
Jeff Becker
d5b4dbe052
more
4 years ago
Jeff Becker
b1259e25c5
set sane defaults for config, implement lmq rpc server, update lokinetmon
4 years ago
Jeff Becker
fb8b8e2e56
add stubs for lmq rpc server
4 years ago
Jeff Becker
ad882d0d70
initial working code
4 years ago
Jeff Becker
0006751d80
initial wack at lokimq
4 years ago
Stephen Shelton
11951510bf
Remove libabyss and rpc::Caller/rpc::Server
4 years ago
Jeff Becker
800668348a
add regression test for key backup bug
4 years ago
Jeff Becker
019168fef0
remove unused local variable
4 years ago
Jeff Becker
1899debfb5
unfug transit hops
4 years ago
Stephen Shelton
193060d602
Undo client-related changes to RC creation
...
This partially reverts changes from
1497b829bd
and intsead only prevents
clients from saving their RC to disk.
4 years ago
Stephen Shelton
980853804d
Remove log statement
4 years ago
Stephen Shelton
cecafb3215
Undo unintentional revert?
4 years ago
Stephen Shelton
d8b12ce764
Let KeyManager assemble key filenames
4 years ago
Stephen Shelton
1497b829bd
Ignore our self.signed file if we're a client
4 years ago
Jeff
45cda241f0
Merge pull request #1272 from majestrate/exit-nodes-2020-05-16
...
exit traffic via snapps
4 years ago
Jeff Becker
acecb23eb3
make libuv event loop logic queue size configurable.
...
remove logic constructor that is no-op.
add constant for default logic queue size
add constant for transit hop queue size
4 years ago
Rick V
1340cd0dce
remove some string conversions entirely
4 years ago
Rick V
f62214cf8c
first pass fix wstring path conversions
4 years ago
Jeff Becker
39f8f17b53
dont set callback if non provided
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
Jeff Becker
1780e86faa
fix up unit tests, make them all pass
4 years ago
Jeff
e6a85d7176
Merge pull request #1263 from jagerman/c++17-niceties
...
C++17 niceties
4 years ago
Jason Rhinelander
e470a6d73e
C++17 niceties
...
- class template argument deduction lets us write `std::unique_lock
foo{mutex}` instead of `std::unique_lock<mutex_type> foo{mutex}` which
makes the `unique_lock` and `shared_lock` functions unnecessary.
- Replace GNU-specific warn_unused_result attribute with C++17-standard
[[nodiscard]]
- Remove pre-C++17 workaround code for fold expressions, void_t
4 years ago
Stephen Shelton
aee96e53a3
Refactor Addr -> IpAddress/SockAddr
4 years ago
Jeff Becker
f1edca9fa1
additional cleanup of cruft
4 years ago
Jeff Becker
1cbf50296c
only add endpoint for hidden service if not service node
4 years ago
Jeff Becker
6aa79b7ca9
set network section
4 years ago
Stephen Shelton
960dc37c1f
Refactor TunEndpoint::Configure() (partially)
4 years ago
Stephen Shelton
f2a26adcaa
Move all [endpoint] options to [network]
4 years ago
Stephen Shelton
dd9ab0f1d5
Remove ability to have multiple endpoints/snodes from config
4 years ago
Stephen Shelton
2bc908cd40
Remove [dns]:local-dns in favor of [dns]:bind
4 years ago
Stephen Shelton
779658edd0
Refactor ExitEndpoint's config, mv dns ops from [network] to [dns]
4 years ago
Stephen Shelton
21ad442b55
Remove NetConfig_t
4 years ago
Stephen Shelton
df01770466
Rename SnappConfig -> EndpointConfig
4 years ago
Stephen Shelton
93b35c92a7
Eradicate service::Config
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
f8439dab61
Misc aesthetic tweaks
4 years ago
Stephen Shelton
526b1320b7
Some maybe-fixes for RouterHive post config cleanup
5 years ago
Stephen Shelton
ca24f25665
Make fewer assumptions about config state
...
This handles values missing when config is created through RouterHive.
5 years ago
Stephen Shelton
de8e44ba21
Re-apply clang-format rules after rebasing
5 years ago
Stephen Shelton
be014175e9
Consolidate logging initialization logic
5 years ago
Stephen Shelton
6909e20588
Fix logging initialization and flush at program exit
5 years ago
Stephen Shelton
d3bcc05aa6
Organize some constants and default values
5 years ago
Stephen Shelton
91206725cb
Inject a default bootstrap file if none in conf
5 years ago
Stephen Shelton
7ea8d62640
Use fs::path over std::string for files
5 years ago
Stephen Shelton
4f77080f75
Remove optional<> from block-bogons
5 years ago
Stephen Shelton
adfcbd1d0b
Slight cleanup of k:v option maps
5 years ago
Stephen Shelton
6fd270ba09
Rip out link type spec and factory
...
We only support IWP now, so this is all effectively dead code.
5 years ago
Stephen Shelton
733efbab40
Reflect removal of accessors on config structs
5 years ago
Stephen Shelton
5b520a4dff
Simplify connection limit constants
5 years ago
Stephen Shelton
ffc58fcedb
Remove dead code (serverOptions)
5 years ago
Stephen Shelton
2e47262350
Demystify LinksConfig
5 years ago
Stephen Shelton
cd1e7713de
Clean up / consolidate config logging logic
5 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.
5 years ago
Jeff
d3091cf9fc
Merge pull request #1167 from tewinget/tooling
...
RouterHive initial PR
5 years ago
Stephen Shelton
ea835405c5
Refactor NotifyRouterEvent() to forward args, event code cleanup
...
This template-ifies Router::NotifyRouterEvent() up so that it accepts
the arguments to instantiate the specified event type, forwarding them
to std::make_unique. This would allow (in the future) the function to
no-op the call and avoid memory allocation. It also slightly reduces
the amount of code required to fire an event.
This commit also simplifies some of the RouterEvent code to reduce
redundancy.
5 years ago
Jeff Becker
5191af1525
typo fix
5 years ago
Jeff Becker
5d86587aab
typo fix
5 years ago
Jeff Becker
bce5cd7b0f
add additional case check and documentation comments for pruning logic
5 years ago
Jeff Becker
b3f2c71617
add comment
5 years ago
Jeff Becker
d8da3f0a83
simplify logic
5 years ago
Jeff Becker
327ab6f178
prune nodedb as client and service node with no whitelist
5 years ago
Thomas Winget
84a1d7dbcc
clang format.......
5 years ago
Thomas Winget
6d472d2423
rc gossip delay adjustment for hive
...
allows enough time for every relay (at least in a hive of 50) to connect
to the bootstrap node so all will get all gossips, but not too long so
tests can run relatively quickly.
5 years ago
Jeff Becker
08de84d40b
remove non public routers from nodedb
5 years ago
Thomas Winget
6fc05ca1ff
RCGossipSentEvent
5 years ago
Thomas Winget
c8c66f0a5f
some refactoring of tooling code, added RCGossipReceivedEvent
5 years ago
Thomas Winget
931ff521d1
working toward full testnet of routers (not clients yet) in hive/pybind setup
...
Not working yet -- some sort of RC issue. Checkout the commit prior to this if you want something that 'works' that you can play with.
5 years ago
Thomas Winget
0f34a950a9
pybind config object, working
5 years ago
Thomas Winget
f712acc486
huzzah it builds, time to test soon!
5 years ago
Jeff Becker
da79b14703
make it compile
5 years ago
Thomas Winget
8dc5dabe49
working toward compilation, still has include issue
5 years ago
Thomas Winget
8d03e6dd3c
more router hive stuff, read below the fold
...
Router now has a hive pointer if LOKINET_HIVE is set.
llarp::Context has a method InjectHive to give Router the pointer.
Router has a method NotifyRouterEvent which does:
- when LOKINET_HIVE is set, passes the event to RouterHive
- else when LOKINET_DEBUG is set, prints the event at a low log level
- else NOP
5 years ago
jeff
49e69d7087
remove uneeded code
5 years ago
Jason Rhinelander
df7a173649
Shorten version and prefix with v
...
So we get `v0.7.0` instead of `lokinet-0.7.0-abcdef12`; the latter is
useful for devs, but not so much for random operators (and you can
always go get the full version from the binary).
5 years ago
Jason Rhinelander
d5eed90a3c
Fix systemd compilation & enable systemd on travis
5 years ago
Jeff Becker
66181d8a8f
systemd status
5 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
5 years ago
Jeff Becker
d2d109e92c
llarp_time_t is now using std::chrono
5 years ago
Jason Rhinelander
089056ca5b
Remove all ABSL_ATTRIBUTE_UNUSED uses
5 years ago
Jason Rhinelander
b4440094b0
De-abseil, part 2: mutex, locks, (most) time
...
- util::Mutex is now a std::shared_timed_mutex, which is capable of
exclusive and shared locks.
- util::Lock is still present as a std::lock_guard<util::Mutex>.
- the locking annotations are preserved, but updated to the latest
supported by clang rather than using abseil's older/deprecated ones.
- ACQUIRE_LOCK macro is gone since we don't pass mutexes by pointer into
locks anymore (WTF abseil).
- ReleasableLock is gone. Instead there are now some llarp::util helper
methods to obtain unique and/or shared locks:
- `auto lock = util::unique_lock(mutex);` gets an RAII-but-also
unlockable object (std::unique_lock<T>, with T inferred from
`mutex`).
- `auto lock = util::shared_lock(mutex);` gets an RAII shared (i.e.
"reader") lock of the mutex.
- `auto lock = util::unique_locks(mutex1, mutex2, mutex3);` can be
used to atomically lock multiple mutexes at once (returning a
tuple of the locks).
This are templated on the mutex which makes them a bit more flexible
than using a concrete type: they can be used for any type of lockable
mutex, not only util::Mutex. (Some of the code here uses them for
getting locks around a std::mutex). Until C++17, using the RAII types
is painfully verbose:
```C++
// pre-C++17 - needing to figure out the mutex type here is annoying:
std::unique_lock<util::Mutex> lock(mutex);
// pre-C++17 and even more verbose (but at least the type isn't needed):
std::unique_lock<decltype(mutex)> lock(mutex);
// our compromise:
auto lock = util::unique_lock(mutex);
// C++17:
std::unique_lock lock(mutex);
```
All of these functions will also warn (under gcc or clang) if you
discard the return value. You can also do fancy things like
`auto l = util::unique_lock(mutex, std::adopt_lock)` (which lets a
lock take over an already-locked mutex).
- metrics code is gone, which also removes a big pile of code that was
only used by metrics:
- llarp::util::Scheduler
- llarp:🧵 :TimerQueue
- llarp::util::Stopwatch
5 years ago
Thomas Winget
74d421ac2d
PathBuildNumber -> NextPathBuildNumber because increment side-effect
5 years ago
Thomas Winget
fc56a018e5
path builder prints hops, rest print short name
5 years ago
Jason Rhinelander
6a8d4aca38
Fix signed/unsigned comparison warning and make more std::chrono-y
5 years ago
Jeff Becker
28561cd654
use Time_t
5 years ago
Jeff Becker
434ce56553
* get rid of dht explore for service nodes
...
* add Time_t using std::chrono for future uses
* make decaying hashset constructor with llarp_time_t explicit
* add decaying hashset implicit constructor using Time_t
* add timeouts for gossiper replay
* allow regossip of our RC
5 years ago
Jeff Becker
154be464ea
rc gossiping
5 years ago
Jeff Becker
7ad47f2dba
* get rid of dht explore for service nodes
...
* add Time_t using std::chrono for future uses
* make decaying hashset constructor with llarp_time_t explicit
* add decaying hashset implicit constructor using Time_t
* add timeouts for gossiper replay
* allow regossip of our RC
5 years ago
Jeff Becker
ea3851d15f
rc gossiping
5 years ago
Jeff Becker
9efd796145
initial wack at 0.7.0 dht fixes
5 years ago
jeff
816070be62
dont inherit std::array
5 years ago
jeff
f728e6016b
router version
5 years ago
jeff
79fd08e559
fix typo
5 years ago
jeff
4a761be52d
use std::chrono
5 years ago
Jeff Becker
fe148f7823
merge conflict fix
5 years ago
Stephen Shelton
5c518d6586
Include outbound message queue stats in dumpState API response
5 years ago
Jason Rhinelander
ba89df40c8
Merge pull request #1041 from notlesh/dht-fixes-cleanup
...
Dht fixes cleanup
5 years ago
Jason Rhinelander
eadfeefafc
Merge pull request #1038 from majestrate/dht-disable-iterative-lookup-2020-01-14
...
disable iterative behavior in DHT
5 years ago
Stephen Shelton
8206557ac7
Don't respect whitelist when we haven't received it yet
5 years ago
Jeff Becker
6fd714d193
contrib/testnet: fix up testnet config generator to make super centralized topology
...
llarp/context.cpp, llarp/nodedb.{h,c}pp: load netdb AFTER whitelist
llarp/router/router.cpp: explore always
llarp/router/{i,}rc_lookup_handler.{h,c}pp explore with whitelist, update routers with lookup before stale
5 years ago
Jeff Becker
b56a3528db
periodic nodedb flush
5 years ago
Jeff Becker
c3b14b32b4
relays do profiling and not hand out "shit" routers in explore
5 years ago
Jeff Becker
52b13b9f1e
typo fix
5 years ago
Jeff Becker
55e27d36e5
* only profile as client
...
* only explore churn as relay
5 years ago
Jeff Becker
79badd6714
* clients expore dht faster
...
* use random path when doing dht lookups for .loki
5 years ago
Jeff Becker
a8e6069a93
enable profiling by default
5 years ago
Thomas Winget
71bb0dd520
implement timers using libuv
...
So far only a bit of the code using timers has been modified to use
the new libuv-based timers. Also only the non-Windows case has been
implemented. Seems to be working though, so it's a good time to commit.
5 years ago
Jason Rhinelander
638fb25b47
Put version info into a compiled file
...
This rewrites the version info using lokid's approach of compiling it
into a .cpp file that gets generated as part of the build (*not* during
the configure stage).
Among other things, this means that changing the version no longer
invalidates ccache or cmake dependencies, and because it depends on
`.git/index` git commits will cause the version to be regenerated,
making the commit tag more reliable (currently if you rebuild without
running cmake your git commit tag doesn't update).
5 years ago
Jeff
22e9223e74
Merge pull request #955 from jagerman/remove-unused-arg
...
Remove unused argument
5 years ago
Jason Rhinelander
6f92ac9c2b
Remove unused argument
...
Fixed a compiler warning about an unused argument, plus the argument
legitimately appears unused/obsolete now.
5 years ago
Jeff Becker
950006c036
reduce log levels at runtime
5 years ago
Jeff Becker
f56e543d75
add deadlock checker and revert bencode change from long ago
5 years ago
Jeff Becker
2eabe98d9b
add systemd watchdog if enabled on compile time
5 years ago
Jeff Becker
eb87189514
try fixing router lockup
5 years ago
Jeff
1396b7b857
Merge branch 'dev' into bootstrap-list-2019-12-06
5 years ago
Jeff Becker
0afb3b320b
add bootstrap list functionality and utility
5 years ago
Stephen Shelton
11410a2748
Avoid trivial getters/setters in KeyManager
5 years ago
Stephen Shelton
66a058a2af
Make format
5 years ago
Stephen Shelton
23fc2ad042
Init key manager before InitOutboundLinks are configured
5 years ago
Jeff
27b1e36039
Merge pull request #936 from majestrate/dev
...
last changes before 0.6.0 version bump
5 years ago
Stephen Shelton
af2259db5f
Move lokid key API request to KeyManager
5 years ago
Stephen Shelton
49e248bfc1
Fix bad merge
5 years ago
Stephen Shelton
93b8832026
Merge branch 'dev' into private-keys-backup-support
5 years ago
Stephen Shelton
521ef9b5bb
Handle link transport key in KeyManager
5 years ago
Jeff Becker
01b24c7090
limit connections
5 years ago
Jeff
b08897a214
Merge pull request #935 from jagerman/logic-thread-fixes
...
Logic thread fixes
5 years ago
Jeff Becker
3c85691f81
limit calls to pumpll such that it gets called fast enough but not too much under load
5 years ago
Stephen Shelton
a0699ad229
Undo adding of crypto version to RouterContact, other fixes
5 years ago
Jeff Becker
098915bb8e
add check for identity key validity
5 years ago
Jeff Becker
5868a25fcc
clear response between tries
5 years ago
Jeff Becker
d685057754
update readme and disable curl on windows
5 years ago
Jeff Becker
d12c75ce1e
move sleep
5 years ago
Jeff Becker
61b75828f0
sleep
5 years ago
Jeff Becker
3878ebd534
use curl to fetch from lokid rpc the identity key
5 years ago
Stephen Shelton
e8e2e21fa2
Reorganize priv key file loading a bit and hook KeyManager into Router
5 years ago
Jeff Becker
56dce90de9
add trace log level for tracking logic thread jobs
5 years ago
Stephen Shelton
fd02e3e149
Stub out KeyManager class
5 years ago
Thomas Winget
9d3e7d349c
Add per-path queues, prioritize control messages over traffic
5 years ago
Jeff Becker
7ee026fa50
make path builds work again
5 years ago
Jeff Becker
0d89f1170b
make it compile
5 years ago
Jeff Becker
c9f26c4911
call Router::PumpLL after every batch of packets from a link session
5 years ago
Jeff Becker
90f523881a
try interchanging pump order
5 years ago
jeff
869ab0b652
Merge remote-tracking branch 'upstream/dev' into vpn-api-2019-10-03
5 years ago
Stephen Shelton
b1da46e521
Add numNodesKnown to llarp.admin.dumpstate RPC endpoint
5 years ago
jeff
58a25602f5
more fixes, implemenmt missing functions
5 years ago
jeff
7d7c6bf38c
Merge remote-tracking branch 'upstream/dev' into multithreaded-cryptography
5 years ago
Michael
f326c93b5b
Apply Jeff's comments
5 years ago
jeff
52757fef0e
Merge remote-tracking branch 'micheal/background_mode' into vpn-api-2019-10-03
5 years ago
Michael
15cb49c9bd
Introduce --background to only start JSON RPC
...
fixes #853
5 years ago
jeff
1853b28590
remove libutp and all such code related to utp
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
ac2a2aed1d
gut libutp and finish making things compile and pass tests
5 years ago
Jeff Becker
da6a3bf9bb
Merge remote-tracking branch 'origin/master' into iwp-multi-ack
5 years ago
Jeff Becker
d54dc7a988
prune dht peers every router tick
5 years ago
Jeff Becker
fd787cc56d
try more ranges
5 years ago
Jeff Becker
61ade40a51
reduce logging and make format
5 years ago
Jeff Becker
e3bb59707e
more
5 years ago
Jeff Becker
3c0245f8b3
Merge remote-tracking branch 'github/master' into iwp-multi-ack
5 years ago
Jeff Becker
4bf6882c8a
more async cryptography
5 years ago
Rick V
8daaab5f6a
fix
5 years ago
Rick V
ef6f62cc04
some people set the netid explicitly, and set it to default anyway
5 years ago
Jeff Becker
1adae338ce
Merge remote-tracking branch 'origin/master'
5 years ago
Michael
0950571313
Move metrics to subdirectory
5 years ago
Michael
4d8fe2a8a8
Move meta programming to subdirectory
5 years ago
Michael
1aec0dfa2b
Move logging to subdirectory
5 years ago
Jeff Becker
c01112e4b7
tracy lock contention testing and other fun things
5 years ago
Jeff Becker
444d832b7c
correct constructors on llarp_buffer_t and check rc on regen
5 years ago
Jeff Becker
b5402dc6c3
Merge remote-tracking branch 'origin/master' into iwp-redux
5 years ago
Michael
70937ab503
Fix docker-compose isolated network
5 years ago
Jeff Becker
acf5f78949
update iwp , add NACK
5 years ago
Jeff Becker
3c3338e801
Merge remote-tracking branch 'origin/master' into memlink
5 years ago
Michael
094b697b01
Replace StatusObject with underlying JSON type
5 years ago
Jeff
ecf3c37d2e
Merge pull request #768 from majestrate/sane-limits
...
Sane limits
5 years ago
Jeff Becker
c14993bc56
use llarp::path::default_len to inform how many routers we need
5 years ago
Michael
16cdfbd5f0
clang-tidy modernize pass
5 years ago
Jeff Becker
a1fff96a1b
limit connections in outbound session maker
5 years ago
Jeff Becker
efa61f324f
include header
5 years ago
Jeff Becker
2345dd3239
try adding proper limits
5 years ago