Commit Graph

337 Commits

Author SHA1 Message Date
Stephen Shelton
4c6be3c8d1
Add PathBuildRejectedEvent to RouterHive 2020-03-12 12:01:54 -06:00
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.
2020-03-12 11:50:46 -06:00
Thomas Winget
84a1d7dbcc clang format....... 2020-03-06 20:20:11 -05:00
Thomas Winget
c8c66f0a5f some refactoring of tooling code, added RCGossipReceivedEvent 2020-03-03 19:57:09 -05:00
Thomas Winget
a9882ad475 PathRequestReceivedEvent implemented 2020-03-03 19:57:09 -05:00
Thomas Winget
c9a278c0de some more changes to pybind/hive code, read below
hive.py is currently largely for testing the pybind stuff, so changes to it will likely
be frequent and arbitrary for now.

Added pybind for llarp::path::PathHopConfig, but not every member -- just rc and upstream routerID

Hive now uses std::queue with mutex instead of our lockless queue.

Removed some functions from Hive that will not be necessary as things are being handled from python.
2020-03-03 19:57:09 -05:00
Thomas Winget
1e04decb66 can ping on lokinet running in python context! 2020-03-03 19:57:09 -05:00
Jeff Becker
add305b9f4
use size / 2 as the number of transit paths 2020-03-03 18:16:08 -05:00
Jeff Becker
05082e2507
fix status line 2020-03-03 18:04:09 -05:00
Jason Rhinelander
76608b6b90 Logic simplification 2020-03-01 11:58:08 -04:00
Stephen Shelton
f61cd1a7da
Add some notes/comments about DHT message handling 2020-02-28 16:26:52 -07:00
Jason Rhinelander
f1aa27e616 fix speeling mistack 2020-02-25 22:27:34 -04:00
Jeff Becker
9d5dbbc0ad
remove uneeded members 2020-02-25 17:37:15 -05:00
Jeff Becker
66181d8a8f
systemd status 2020-02-25 17:32:57 -05:00
Jeff Becker
fdcd19662f
remove trailing "ms" 2020-02-25 12:07:30 -05:00
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 2020-02-25 12:05:13 -05:00
Jeff Becker
d2d109e92c
llarp_time_t is now using std::chrono 2020-02-24 15:25:03 -05:00
Jeff Becker
f4520ac920
make decaying hashset use llarp::Time_t and move unit tests to use catch2 2020-02-24 15:22:49 -05:00
Jason Rhinelander
089056ca5b Remove all ABSL_ATTRIBUTE_UNUSED uses 2020-02-24 14:27:44 -04:00
Jason Rhinelander
f84ce61d66 Removed empty cpp files
These aren't needed: CMake already knows how to follow #includes and
rebuild when headers change as long as the headers are included
*somewhere*.  The extra .cpp files here just require building a bunch of
.cpp files with just header content that we just end up throw away
during linking (since the same things will also be compiled in whatever
other compilation units include the same headers).
2020-02-21 23:39:11 -04:00
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
2020-02-21 23:22:47 -04:00
Stephen Shelton
ea97a8f2ac
Make format 2020-02-21 10:16:45 -07:00
Thomas Winget
fae86281e9 make path short name look nicer 2020-02-20 17:20:17 -05:00
Thomas Winget
145efaf0bb should probably build before committing... 2020-02-20 17:04:08 -05:00
Thomas Winget
74d421ac2d PathBuildNumber -> NextPathBuildNumber because increment side-effect 2020-02-20 16:57:48 -05:00
Thomas Winget
ad3465ee66 std move better 2020-02-20 16:55:45 -05:00
Thomas Winget
893ef2b874 const-y-ness and move-y-ness 2020-02-20 16:46:07 -05:00
Thomas Winget
fc56a018e5 path builder prints hops, rest print short name 2020-02-20 16:37:39 -05:00
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").
2020-02-19 18:21:25 -04:00
Jeff Becker
e35d17764a * add path::Path::UniqueEndpointSet_t
* start using check2 for new unit tests
* unit test for path::Path::UniqueEndpointSet_t
2020-02-14 17:41:31 -04:00
Jeff Becker
7374f8f0fd
update lokinetmon 2020-02-11 10:36:18 -05:00
Jeff Becker
e8b84fcfbd
add path speed metrics for lokinetmon 2020-02-08 11:21:18 -05:00
Jeff Becker
499e346da6
notify delivery of path builds 2020-02-06 12:12:39 -05:00
Jeff Becker
99eb7726ff
initial dht key blinding 2020-01-27 16:30:41 -05:00
Jeff Becker
9efd796145
initial wack at 0.7.0 dht fixes 2020-01-27 11:54:51 -05:00
Jeff Becker
495ad6d566
testnet patch 2020-01-14 07:07:29 -05:00
Jeff Becker
9214ecbc48
rename bloomfilter to replayfilter 2020-01-06 07:20:16 -05:00
Jeff Becker
a7a101e33c
more intellegent path failure profiling using LRSM 2020-01-03 07:52:19 -05:00
Jeff Becker
1244ad83ad
fix include file use 2020-01-03 07:05:28 -05:00
Jeff Becker
d391f70417
reduce cpu use 2020-01-03 07:00:02 -05:00
Jeff Becker
73e07ef2d0
client side replay filter 2020-01-03 06:04:47 -05:00
Jeff Becker
472cee2594
make static constant for decay interval 2019-12-30 17:03:34 -05:00
Jeff Becker
da5af879e9
typofix 2019-12-30 15:58:30 -05:00
Jeff Becker
f3e96e06b2
propagate error to client 2019-12-30 15:55:56 -05:00
Jeff Becker
a9c9fe9c24
limit client side path builds per ip 2019-12-30 15:15:19 -05:00
Jeff Becker
8b8d636ded
make format 2019-12-22 09:16:28 -05:00
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.
2019-12-18 13:11:13 -05:00
Jeff Becker
01b24c7090
limit connections 2019-12-03 12:49:29 -05:00
Jeff Becker
0f4c531d06
fix path resource leak 2019-12-03 12:49:15 -05:00
Jeff Becker
0828307906 fix address mapping bug 2019-11-29 19:11:14 -04:00
Jeff Becker
5188873288 batch and flush 2019-11-29 19:11:14 -04:00
Jeff Becker
2852601a28 flush in logic 2019-11-29 19:11:14 -04:00
Jeff Becker
d823d6fa70 only flush when no other jobs are executing 2019-11-29 19:11:14 -04:00
Jeff Becker
9e305c5b30 use lockless queues to gather results of transit traffic work 2019-11-29 19:11:14 -04:00
Jeff Becker
d591394ad2 dont process empty queues 2019-11-29 19:11:14 -04:00
Jeff Becker
e2472d985d process transit hops on flush 2019-11-29 19:11:14 -04:00
Jeff Becker
c3858a56df
make it compile 2019-11-22 16:23:21 -05:00
Jeff Becker
34bc3da069
flush quues of other paths 2019-11-22 16:23:20 -05:00
Jeff Becker
56dce90de9
add trace log level for tracking logic thread jobs 2019-11-22 16:23:19 -05:00
Jeff Becker
1a864832c8
make format 2019-11-14 10:07:40 -05:00
Thomas Winget
23a9773e1e
remove our paths from outbound queues 2019-11-07 13:23:14 -05:00
Thomas Winget
ef1a5652ef
remove our paths from outbound queues 2019-11-07 13:23:06 -05:00
Thomas Winget
17de3f2478 do...while; make format; remove erroneous GUARDED_BY 2019-11-06 10:26:51 -05:00
Thomas Winget
75512b1b58 ban zero id for pathid; clarity and cleanup 2019-11-06 10:26:51 -05:00
Thomas Winget
9d3e7d349c Add per-path queues, prioritize control messages over traffic 2019-11-06 10:26:51 -05:00
Jeff Becker
7ee026fa50
make path builds work again 2019-11-05 11:58:53 -05:00
Jeff Becker
7c35b00f98
Revert "move calling of path build sccess hook to correct place"
This reverts commit 902cd86a3b.
2019-11-04 08:39:29 -05:00
Jeff Becker
902cd86a3b
move calling of path build sccess hook to correct place 2019-11-03 16:07:39 -05:00
Jeff Becker
9d266dbec7
meh 2019-11-03 15:52:00 -05:00
jeff
32ed821763 Merge remote-tracking branch 'upstream/dev' into multithreaded-cryptography 2019-10-01 10:51:28 -04:00
jeff
f9fb40f590 final touches 2019-09-20 12:56:19 -04:00
jeff
6c2ebbb925 try fixing handover and add snapp traffic to multithreaded crypto workers 2019-09-19 10:41:31 -04:00
Jeff Becker
5863e33825
move it arround 2019-09-16 12:21:21 -04:00
Jeff Becker
327c545530
finish multithread cryptography first pass 2019-09-16 12:12:05 -04:00
jeff
14c9ef15ed try calling stuff in logic thread from event loop 2019-09-16 06:21:12 -04:00
Jeff Becker
bcf9135da6
testnet 2019-09-05 16:20:55 -04:00
Jeff Becker
3c0245f8b3
Merge remote-tracking branch 'github/master' into iwp-multi-ack 2019-09-05 13:40:04 -04:00
Jeff Becker
4bf6882c8a
more async cryptography 2019-09-05 13:39:09 -04:00
Jeff Becker
12314e8d00
ensure no crash on quit 2019-09-04 08:41:07 -04:00
Jeff Becker
5cdd92e2a3
remove more locking and make it safe 2019-09-04 08:24:17 -04:00
Jeff Becker
1adae338ce
Merge remote-tracking branch 'origin/master' 2019-09-04 07:58:02 -04:00
Michael
edd0ec398f
Move thread stuff to subdirectory 2019-09-03 20:52:28 +01:00
Michael
4d8fe2a8a8
Move meta programming to subdirectory 2019-09-03 20:52:28 +01:00
Jeff Becker
c01112e4b7
tracy lock contention testing and other fun things 2019-09-03 11:56:56 -04:00
Michael
094b697b01
Replace StatusObject with underlying JSON type 2019-08-19 10:33:26 +01:00
Michael
40aabd6d92
Use the right version of clang-tidy 2019-08-13 22:38:00 +01:00
Michael
0a1620aff2
make format 2019-08-12 22:10:07 +00:00
Michael
16cdfbd5f0
clang-tidy modernize pass 2019-08-12 16:52:58 +01:00
Michael
84601fa474
Make format 2019-08-08 00:26:40 +01:00
Michael
d1990b5e93
Fix suspicious thread-unsafety 2019-08-08 00:18:56 +01:00
Jeff
10d7e7cb77
Merge branch 'master' into master 2019-08-05 07:59:30 -04:00
Michael
c429f0cec9
Jeff's fixes 2019-08-04 22:30:47 +01:00
Michael
a270fe5f33
fixup! Fix gcc trunk warnings 2019-08-02 10:34:56 +01:00
Michael
f9e9227e19
Fix gcc trunk warnings 2019-08-02 10:29:08 +01:00
Michael
4763888d2c
Add fail-able docker build for gcc trunk 2019-08-02 10:28:09 +01:00
Rick V
f6c97091fd
clang-format 2019-08-01 22:25:48 -05:00
Rick V
16096c6adb
add debug helper lib for core dump generation on all supported windows targets
had an epiphany earlier

i kept having problems with static linking because
i merged the GNU C runtime with the SEH library
instead of merging the latter with pthread
2019-08-01 21:39:42 -05:00
Jeff Becker
aa0a795689
call path build fail stuff in logic thread 2019-07-31 08:51:24 -04:00
Jeff Becker
60fbeca9d4
const correctness 2019-07-29 12:43:24 -04:00
Jeff Becker
db2206664a
fix crashes in testnet 2019-07-29 11:10:20 -04:00
Thomas Winget
697ece64cc make TransitHop self-destruct if path is invalidated 2019-07-25 19:54:10 -04:00
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
2019-07-25 17:46:56 -04:00
Thomas Winget
bbb5339b33 add debug-level log message on path build success 2019-07-25 14:48:14 -04:00
Jeff Becker
7a3c8e5ca0
set limits correctly 2019-07-18 12:32:26 -04:00
Jeff Becker
f48754c45d
make hop count and length configurable 2019-07-18 12:28:17 -04:00
Michael
e52492911d
Refactor endpoint state management to a new class 2019-07-15 10:15:51 +01:00
Jeff Becker
1fd6b5ae74
Merge remote-tracking branch 'origin/master' into ipv6-tun 2019-07-12 09:53:52 -04:00
Michael
be997020dd
Fixup two minor warnings 2019-07-12 07:27:21 +01:00
Michael
488695047f
Remove redundant else blocks 2019-07-09 22:54:46 +01:00
Jeff Becker
b9bcc2b775
make threadpool consice 2019-07-09 09:47:24 -04:00
Jeff Becker
d6ec528a72
start work on seperating ips out of endpoint 2019-07-01 10:56:56 -04:00
Jeff Becker
64e9622270
start seperating tun and endpoint 2019-07-01 09:44:25 -04:00
Michael
b6b400baef
Tidy up pathbuilder code 2019-06-20 17:35:40 +01:00
Michael
08609f9e5a
Rename message files 2019-06-19 23:30:07 +01:00
Michael
8a058fcb34
Move other messages 2019-06-19 21:35:57 +01:00
Michael
83bd9227a7
Move exit messages 2019-06-19 21:35:26 +01:00
Michael
d6751e3eeb
Move subset of messages to right directory 2019-06-19 21:35:26 +01:00
Michael
b89689fec3
Refactor path build code 2019-06-18 22:51:41 +01:00
Rick V
c6c31efec9
make format 2019-06-17 23:29:54 -05:00
Jeff Becker
9ea13a9ee3
ingore paths that drop exit traffic 2019-05-31 06:57:41 -04:00
Jeff Becker
762a0c534f
Merge remote-tracking branch 'origin/master' 2019-05-29 08:09:02 -04:00
Michael
491fee206b
Port code to use CryptoManager over passing Crypto pointers 2019-05-28 20:45:08 +01:00
Jeff Becker
068fec82fb
set lifetime of paths 2019-05-28 10:06:01 -04:00
Jeff Becker
2897141036
make format and introduce new function EnsureRouter on router to check nodedb or do dht lookup 2019-05-28 07:35:26 -04:00
Jeff Becker
a375f1103f
explicitly lookup router if not connected to it on LRCM forward. 2019-05-27 15:01:09 -04:00
Jeff Becker
c77e0aff8a
only check for ready paths when counting in future 2019-05-25 12:27:54 -04:00
Jeff Becker
13190284f7
double path build timeout 2019-05-23 09:38:31 -04:00
Jeff Becker
64c7ed42fc
make format 2019-05-22 12:20:50 -04:00
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
2019-05-22 12:20:03 -04:00
Michael
dd8a93a400
Apply rule of zero to code base 2019-05-19 23:11:07 +01:00
Jeff Becker
a4e90ee769
hax to make it work. 2019-05-16 14:55:12 -04:00
Jeff Becker
d3a98db267
don't resize frames 2019-05-15 10:55:01 -04:00
Jeff Becker
f832c9a593
use shared_ptr 2019-05-11 10:13:35 -04:00
Jeff
06f8bb2f42 add blacklist-snode option 2019-05-10 12:19:33 -04:00
Jeff Becker
ad019cab71
add changes for review 2019-05-08 10:59:28 -04:00
Jeff Becker
486042511c
log hops 2019-05-08 10:30:55 -04:00
Jeff Becker
540c2e1666
fix previous commit 2019-05-08 10:18:04 -04:00
Jeff Becker
df322e1149
don't include duplicate hops in paths 2019-05-08 10:01:31 -04:00
Jeff Becker
9d466cd09d
pump only on send queue full and clear exit roles when closing exit 2019-05-08 08:50:33 -04:00
Jeff Becker
b68f539de6
limit outbound connections 2019-05-08 08:17:48 -04:00
Jeff Becker
1d852a1e83
send exit close ack 2019-05-07 14:27:21 -04:00
Jeff Becker
7b03b63d13
more sighup code 2019-05-07 14:15:22 -04:00
Jeff Becker
a53da68700
start work on sighup 2019-05-07 13:46:38 -04:00
Jeff Becker
744ebac579
only use ready paths 2019-05-07 09:49:49 -04:00
Jeff Becker
61d42811be
prevent crash 2019-05-07 09:04:43 -04:00
Jeff Becker
34533db620
add urgent build that builds over an existing path for an endpoint 2019-05-07 08:31:34 -04:00
Jeff Becker
b9adf90fb9
remove random timer fuzz 2019-05-06 12:13:41 -04:00
Jeff Becker
6c17bf35b3
decrease minimum path build interval 2019-05-06 12:00:10 -04:00
Jeff Becker
5fa85acaf7
rebuild exit paths if they die 2019-05-06 10:54:05 -04:00
Jeff Becker
92ad98be8b
refactor hooks to be have more c++isms
make path build timeouts use log level warning
2019-05-05 09:51:48 -04:00