Commit Graph

874 Commits (ffe9bbc984da2f0c48dde2883718bfe7db38f543)

Author SHA1 Message Date
Thomas Winget 4c630e0437 Large collection of changes to make android work
- Previous android java and jni code updated to work, but with much love
  still needed to make it work nicely, e.g. handling when the VPN is
  turned off.

- DNS handling refactored to allow android to intercept and handle DNS
  requests as we can't set the system DNS to use a high port
  (and apparently Chrome ignores system DNS settings anyway)

- add packet router structure to allow separate handling of specific
  intercepted traffic, e.g. UDP traffic to port 53 gets handled by our
  DNS handler rather than being naively forwarded as exit traffic.

- For now, android lokinet is exit-only and hard-coded to use exit.loki
  as its exit.  The exit will be configurable before release, but
  allowing to not use exit-only mode is more of a challenge.

- some old gitignore remnants which were matching to things we don't
  want them to (and are no longer relevant) removed

- some minor changes to CI configuration
3 years ago
Jeff Becker df4ea34a56
nodedb refactor
* bump zmq static dep
* lokimq -> oxenmq
* llarp_nodedb -> llarp::NodeDB
* remove all crufty api parts of NodeDB
* make NodeDB rc selection api not suck
* make path builder api not suck
* propagate all above changes so that unit tests work and it all compiles
3 years ago
Jeff 49b9ad7197
tun code refactor (#1495)
* partial tun code refactor

* take out the trash

* move vpn platform code into llarp/vpn/platform.cpp

* fix hive build

* fix win32

* fix memory leak on win32

* reduce cpu use

* make macos compile

* win32 patches:

* use wepoll for zmq
* use all cores on windows iocp read loop

* fix zmq patch for windows

* clean up cmake for win32

* add uninstall before reinstall option to win32 installer

* more ipv6 stuff

* make it compile

* fix up route poker

* remove an unneeded code block in macos wtf

* always use call to system

* fix route poker behavior on macos

* disable ipv6 on windows for now

* cpu perf improvement:

* colease calls to Router::PumpLL to 1 per event loop wakeup

* set up THEN add addresses

* emulate proactor event loop on win32

* remove excessively verbose error message

* fix issue #1499

* exclude uv_poll from win32 so that it can start up

* update logtag to include directory

* create minidump on windows if there was a crash

* make windows happy

* use dmp suffix on minidump files

* typo fix

* address feedback from jason
* use PROJECT_SOURCE_DIR instead of CMAKE_SOURCE_DIR
* quote $@ in apply-patches in case path has spaces in it

* address feedback from tom

* remove llarp/ev/pipe
* add comments for clairification
* make event loop queue size constant named
3 years ago
Jeff fe30193a97
revive android build system (#1339)
* it lives?

* clean up

* add readme and add x86_64 to abi filters

* disable route poking on android

* make it compile on android

* it compiles!!111

* typofix

* re-enable ccache for android
4 years ago
jeff 5391e6a66a initial config overriding on runtime 4 years ago
Jeff Becker 1e8fcbb99b
make destructor virtual 4 years ago
Jeff Becker da6ba86892
add destructor to fix CI builds on macos 4 years ago
Jeff Becker e9aa200e8c
make formatting happy 4 years ago
Stephen Shelton 0f074cff8c
Remove ambguity WRT loading and passing of Config 4 years ago
Stephen Shelton 88c3e9ce00
Remove worker thread parameter from Router constructors 4 years ago
Stephen Shelton ec20d94c6b
Fix Context::Configure() 4 years ago
Stephen Shelton ed47ba998f
Minor fixes around Context 4 years ago
Stephen Shelton 552dcce5fd
Use inheritance to handle Hive injection 4 years ago
Stephen Shelton b0d8568452
Remove llarp C API usage from RouterHive 4 years ago
Stephen Shelton 84c83a2400
Add specialized subclass of Router for Hive 4 years ago
Jeff Becker f4971a88fd
use lokimq workers instead of llarp:🧵:ThreadPool 4 years ago
Stephen Shelton 0aa43c6b07
Pass RuntimeOptions instead of 'bool isRelay' 4 years ago
Stephen Shelton d85e48c9d0
Use llarp::Context::CallSafe() for vpn AsyncClose() 4 years ago
Stephen Shelton ba92d12203
Remove TODO comment 4 years ago
Stephen Shelton b5d6a73ffd
Rip out most of C API 4 years ago
Jeff Becker 800668348a
add regression test for key backup bug 4 years ago
Stephen Shelton 1497b829bd
Ignore our self.signed file if we're a client 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 de8e44ba21
Re-apply clang-format rules after rebasing 4 years ago
Stephen Shelton f250b7adcb
Remove pidfile support 4 years ago
Stephen Shelton 05257126fe
Make distinction between config dir and data dir 4 years ago
Stephen Shelton 923e73f693
Plumb isRelay CLI arg through to config 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
Jeff d3091cf9fc
Merge pull request #1167 from tewinget/tooling
RouterHive initial PR
4 years ago
Jeff Becker 9a1050bbe7
remove unused headers 4 years ago
Thomas Winget 84a1d7dbcc clang format....... 4 years ago
Rick V b4d6f89452
try extracting dns bind addr from INI on windows 4 years ago
Jeff Becker 877443d95c more introspection code 4 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
4 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
4 years ago
Rick V b9c02d999f
why was this there
we do not support MSVC
4 years ago
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.
4 years ago
Jeff Becker f56e543d75
add deadlock checker and revert bencode change from long ago 5 years ago
Jeff Becker 9b99752276
i hate windows 5 years ago
Jeff 3a6c16aa36
Merge pull request #871 from majestrate/ed25519-signing
Ed25519 signing
5 years ago
jeff ff8c167362 make it compile on windows 5 years ago
jeff 9dd73dad46 close -> closeasync 5 years ago
jeff 58a25602f5 more fixes, implemenmt missing functions 5 years ago
jeff c26b67c379 finish wiring up jni shizz 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 4371901e70 flesh out vpn c api
clean up cruft
5 years ago
Michael fadedb4a7b
Distinct ios build 5 years ago
Michael edd0ec398f
Move thread stuff to subdirectory 5 years ago
Michael 84601fa474
Make format 5 years ago