Commit Graph

840 Commits

Author SHA1 Message Date
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
Rick V
b9c02d999f
why was this there
we do not support MSVC
2019-12-22 07:49:36 -06:00
Jason Rhinelander
2e17542028 Don't include net/if.h to help xenial
Loading both net/if.h and linux/if.h on xenial breaks compilation
because xenial's kernel/glibc headers are broken AF.

We don't actually need anything from net/if.h here, so don't include it.
2019-12-14 11:58:10 -04:00
Jeff Becker
f56e543d75
add deadlock checker and revert bencode change from long ago 2019-12-07 14:58:19 -05:00
Jeff Becker
9b99752276
i hate windows 2019-11-05 08:19:27 -05:00
Jeff
3a6c16aa36
Merge pull request #871 from majestrate/ed25519-signing
Ed25519 signing
2019-10-28 10:42:40 -04:00
jeff
ff8c167362 make it compile on windows 2019-10-22 11:58:34 -04:00
jeff
9dd73dad46 close -> closeasync 2019-10-09 09:09:42 -04:00
jeff
58a25602f5 more fixes, implemenmt missing functions 2019-10-09 09:08:38 -04:00
jeff
c26b67c379 finish wiring up jni shizz 2019-10-08 10:52:01 -04:00
jeff
52757fef0e Merge remote-tracking branch 'micheal/background_mode' into vpn-api-2019-10-03 2019-10-04 14:10:58 -04:00
Michael
15cb49c9bd
Introduce --background to only start JSON RPC
fixes #853
2019-10-04 10:32:52 +01:00
jeff
4371901e70 flesh out vpn c api
clean up cruft
2019-10-03 09:54:21 -04:00
Michael
fadedb4a7b
Distinct ios build 2019-09-30 09:59:34 +01:00
Michael
edd0ec398f
Move thread stuff to subdirectory 2019-09-03 20:52:28 +01:00
Michael
84601fa474
Make format 2019-08-08 00:26:40 +01:00
Rick V
d4688ed3b3
get our TAP ifindex to pass to ipv6(1) on old platforms 2019-08-02 03:23:50 -05:00
Jeff Becker
43cb62af16
fix android compile, have makefile pull in libuv for cmake on android 2019-07-24 11:25:40 -04:00
Michael
e52492911d
Refactor endpoint state management to a new class 2019-07-15 10:15:51 +01:00
Jeff Becker
ec6a1cfddc
make it compile 2019-07-09 09:58:16 -04:00
Jeff Becker
b9bcc2b775
make threadpool consice 2019-07-09 09:47:24 -04:00
Michael
a2326efa37
Revert "Merge pull request #679 from tewinget/revert-config-refactor"
This reverts commit 2996a7f29c, reversing
changes made to 10df3bd4b3.
2019-07-06 14:46:25 +01:00
Thomas Winget
d044d60101 Reverts #678 #677 and #669 with hashes:
10df3bd
766ece8
979f095

See those commits for further details
2019-07-02 11:02:20 -04:00
Michael
b51f7d8015
Convert to load config in config loader 2019-07-02 01:58:39 +01:00
Rick V
a346f0d279
now i remember why i had to open /dev/tun twice on solaris
that _should_ fully close the TUN interface on Solaris
2019-06-18 18:56:31 -05:00
Jeff Becker
6c84bf5739
make format 2019-05-29 08:28:23 -04:00
Michael
8323725509
Initial No-Op Crypto implementation 2019-05-29 09:46:34 +01:00
Michael
6038d75597
Fix crypto build derp 2019-05-29 00:03:24 +01:00
Michael
a62655d501
Move tests to use top-level LlarpTest 2019-05-28 20:45:09 +01:00
Michael
491fee206b
Port code to use CryptoManager over passing Crypto pointers 2019-05-28 20:45:08 +01: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
Jeff Becker
3c3dd65760
use default values 2019-05-08 11:47:37 -04:00
Jeff Becker
9b379a1659
add explicit constructor 2019-05-08 11:42:38 -04:00
michael-loki
0195152e05 Allow builds on MSVC (#518)
* Import cxxopts to replace getopts usage

* Add visual studio build things

* Fixup abseil build parts

* Replace __attribute__((unused)) with ABSL_ATTRIBUTE_UNUSED

* Fixup minor windows build issues

* Replace getopts usage

* Temporarily fixup .rc files

* More minor windows fixes

* Get a working build

* Revert .rc files

* Revert changes to nodedb
2019-04-19 13:24:33 -05:00
Michael
afa058c4ee Fix build on windows 2019-04-14 18:12:11 +01:00
Michael
9bc501bbf7 Integrate metric tank into build 2019-04-14 17:18:32 +01:00
Jeff Becker
3da6551e82
make android compile 2019-04-08 11:54:19 -04:00
Jeff Becker
184971a446
Merge remote-tracking branch 'origin/master' 2019-04-08 08:03:02 -04:00
Jeff Becker
e178a70929
use shared_ptr for event loop 2019-04-08 08:01:52 -04:00
Michael
5df8e16c44
Add metrics section to config 2019-04-07 18:55:21 +01:00
Michael
57d6668e55
Move metrics out of daemon into llarp::Context 2019-04-05 10:20:48 +01:00
Rick V
1eddba0dd3
that _should_ be just enough to implement TUN on Solaris 2.x
sadly this is ineligble for upstream because we don't bother
to use TAP in the slightest
2019-03-25 12:03:55 -05:00
Rick V
0de253065e
remove ded code
add code for proper DNSc search
2019-02-26 15:35:04 -06:00
Michael
89ae60cfab
llarp::Context uses AbstractRouter now 2019-02-22 16:21:05 +00:00
Michael
67b5d48095
Replace usage of new/delete with unique_ptr/stack allocation 2019-02-11 16:24:05 +00:00
Michael
6055829df4
Remove tl::optional and use absl::optional always 2019-02-03 02:13:31 +00:00
Jeff Becker
d89e58199a
add initial identity key seed stuff
add more kubernetes stuff

make shared library installed if built
2019-01-21 10:45:18 -05:00
Jeff Becker
177dca91e2
add pidfile option 2019-01-18 08:24:33 -05:00
Jeff Becker
41e8691702
make format 2019-01-17 09:02:50 -05:00
Michael
79157414f3
Split crypto.hpp into 3 different files 2019-01-13 16:32:51 +00:00