Commit Graph

299 Commits

Author SHA1 Message Date
Jason Rhinelander
2e9840ea39 Replace abseil date code with Hinnart's date.h
Howard Hinnart's date.h is the library that was accepted as C++20
date/calendar support, so this is essentially a backport of C++20 date
time support.

(It does support timezone support, but requires more of the library and
that seems like overkill for what we need; this just prints UTC
timestamps instead, which need only a header-only include).
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
fe61367a87 Vastly simplified llarp::util::memFn
There is a huge pile of unnecessary machinery here that can be solved
with a few lambdas and some member function pointer type deduction.
2020-02-21 23:24:33 -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
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
Jason Rhinelander
c522bc0537 ghc::filesystem devendor to submodule
Also removed some unused/old options for conditionally not using
ghc::filesystem and a sodium option that wasn't used anywhere.
2020-02-13 15:47:11 -04:00
Jason Rhinelander
5a787de73b Switch abseil & nlohmann to submodules and update to latest stable
Our current abseil won't build with gcc 10 (its `optional`
implementation appears broken), and spews warnings under slightly older
compilers; updating to the latest stable 2019 branch fixes both issues.
2020-02-13 15:14:17 -04:00
Jeff Becker
ea3851d15f
rc gossiping 2020-02-12 12:10:48 -05:00
Jason Rhinelander
66ebe3995e Remove -Wshadow; it is far too aggressive under gcc 2020-02-07 00:12:42 -04:00
Jeff Becker
9efd796145
initial wack at 0.7.0 dht fixes 2020-01-27 11:54:51 -05:00
jeff
f728e6016b router version 2020-01-25 11:28:07 -05:00
Jeff Becker
fde0ca374f
i hate curl 2020-01-07 18:14:25 -05:00
Jeff Becker
336a748695
make it build in normal mode too 2020-01-07 18:14:25 -05:00
Jeff Becker
80cbddde7b
fixups for review 2020-01-07 18:14:25 -05:00
Jeff Becker
2ce592e4af
static link with docs 2020-01-07 18:14:25 -05:00
Jeff Becker
562f3f07ab
add unit test for decaying hash set 2019-12-30 15:52:10 -05:00
Thomas Winget
f4c9e09d44 remove obsolete timer-related code 2019-12-18 19:05:33 -05:00
Rick V
9fa9209114
don't be aggressive
remove libcurl packaging rules. We still build it, but ship only the curl.exe
2019-12-16 11:28:47 -06:00
Rick V
6d49ffd60b
include all platform dependencies transitively 2019-12-16 11:28:46 -06:00
Rick V
e15c57c114
get ready for v0.6
bump version

don't ship the shared object
2019-12-16 11:28:21 -06:00
Jeff Becker
fcf0ae2b9e
prune unused files. 2019-12-15 07:02:17 -05:00
Stephen Shelton
332f33b049 Remove FS_LIB conditionals 2019-12-12 12:58:46 -07:00
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).
2019-12-11 22:40:07 -04:00
Jason Rhinelander
99d27a4886 Add missing ev_libuv (now needed everywhere) 2019-12-11 19:19:28 -04:00
Jeff Becker
7a78160bf0
final change 2019-12-11 16:34:03 -05:00
Jeff Becker
5729d0bff5
more 2019-12-11 16:31:49 -05:00
Jeff Becker
0afb3b320b
add bootstrap list functionality and utility 2019-12-06 12:32:46 -05:00
Stephen Shelton
93b8832026
Merge branch 'dev' into private-keys-backup-support 2019-12-03 11:20:45 -07:00
Jeff
76fc50cfb7
Merge pull request #914 from despair86/dev
win32 fixes
2019-12-03 13:08:55 -05:00
Rick V
cf3469e11a
crash on wine, we support linux, ucb_unix, svr4
natively ffs. i tested this patch on wine 4.4 on fuckin
Solaris 11 snv_151
2019-12-01 19:01:40 -06:00
Jeff Becker
3878ebd534
use curl to fetch from lokid rpc the identity key 2019-11-26 16:58:20 -05:00
Jeff Becker
ac686a9329
remove valgrind access errors 2019-11-22 16:23:20 -05:00
Stephen Shelton
fd02e3e149 Stub out KeyManager class 2019-11-21 20:57:41 -07:00
Jeff
3a6c16aa36
Merge pull request #871 from majestrate/ed25519-signing
Ed25519 signing
2019-10-28 10:42:40 -04:00
jeff
996ff06c6a update cmakelists.txt to no longer build removed file 2019-10-14 09:48:26 -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
jeff
1853b28590 remove libutp and all such code related to utp 2019-09-19 11:36:05 -04:00
jeff
ac2a2aed1d gut libutp and finish making things compile and pass tests 2019-09-12 14:19:25 -04:00
Michael
edd0ec398f
Move thread stuff to subdirectory 2019-09-03 20:52:28 +01:00
Michael
0950571313
Move metrics 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
Michael
1aec0dfa2b
Move logging to subdirectory 2019-09-03 20:52:27 +01:00
Jeff Becker
426ee41c46
initial iwp 2019-08-22 16:53:27 -04:00
Jeff Becker
3c3338e801
Merge remote-tracking branch 'origin/master' into memlink 2019-08-21 10:53:25 -04:00
Jeff Becker
2345dd3239
try adding proper limits 2019-08-12 07:20:57 -04:00
Jeff Becker
c1f33bb1ac
initial mempipe implementation 2019-08-07 12:33:29 -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
Jeff
183ec25717
Merge pull request #729 from majestrate/fix-android-2019-07-24
make android compile again
2019-07-25 14:24:13 -04:00
Thomas Winget
baf8019fe5 Refactor Router code into more classes
This commit refactors functionality from the Router class into separate,
dedicated classes.
There are a few behavior changes that came as a result of discussion on
what the correct behavior should be.
In addition, many things Router was previously doing can now be provided
callback functions to alert the calling point when the asynchronous
action completes, successfully or otherwise.
2019-07-25 14:11:02 -04:00
Jeff Becker
43cb62af16
fix android compile, have makefile pull in libuv for cmake on android 2019-07-24 11:25:40 -04:00
Jeff Becker
1f761a1cb0
* fix arm cross compile on ubuntu disco
* add toolchain option for cross compile
2019-07-16 09:41:43 -04:00
Michael
e52492911d
Refactor endpoint state management to a new class 2019-07-15 10:15:51 +01:00
Jeff Becker
58005c5f81
Merge remote-tracking branch 'origin/master' into ipv6-tun 2019-07-08 10:17:21 -04:00
Michael
2acb163083
Fix llvm 8 build 2019-07-06 14:46:25 +01: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
Jeff Becker
04c9c61dfb
Merge remote-tracking branch 'origin/master' into ipv6-tun 2019-07-02 11:25:10 -04: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
bd78471dae
Move ini parser as well 2019-07-02 01:58:38 +01:00
Michael
00c237dc6d
Move config class to its own dir 2019-07-02 01:58:38 +01:00
Michael
80d1e4aef9
Add in-source version of std::filesystem::permissions 2019-07-02 00:01:25 +01:00
Michael
59e8a7316f
Revert "Merge pull request #668 from michael-loki/remove_cppbackport"
This reverts commit 33142d5005, reversing
changes made to 408a652a01.
2019-07-01 10:33:03 +01:00
Jeff Becker
a225759c0f
Merge remote-tracking branch 'origin/master' into ipv6-tun 2019-06-28 16:12:34 -04:00
Michael
1639c58cb6
Remove cppbackport from vendor dir 2019-06-27 16:25:44 +01:00
Jeff Becker
e265661adb
try fixing issue number 17 (not done) 2019-06-24 12:48:48 -04:00
Jeff Becker
aad71c2022
try fixing issue number 17 (not done) 2019-06-24 11:51:58 -04:00
Jeff Becker
5c61df08b5
Merge remote-tracking branch 'origin/master' into ipv6-tun 2019-06-20 10:35:51 -04: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
2291d48bcc
Move remaining messages around 2019-06-19 21:12:10 +01:00
Michael
66cf5cc73d
Move exit messages to match header 2019-06-19 21:11:34 +01:00
Michael
b89689fec3
Refactor path build code 2019-06-18 22:51:41 +01:00
Jeff Becker
dcefcd7879
Merge remote-tracking branch 'origin/master' into ipv6-tun 2019-06-17 08:38:08 -04:00
Michael
c0525f2ea3
Move local publishers to their own files 2019-06-15 15:48:48 +01:00
Jeff Becker
97b4e27704
Merge remote-tracking branch 'origin/master' into ipv6-tun 2019-06-14 09:42:41 -04:00
Jeff
3a7d74b08c
Merge pull request #647 from despair86/remove-old-evloops
we libuv now
2019-06-14 08:23:24 -04:00
Jeff Becker
227f561ffc
Merge remote-tracking branch 'origin/master' into ipv6-tun 2019-06-14 08:11:16 -04:00
Rick V
68862cc830
we libuv now 2019-06-13 21:21:44 -05:00
Michael
bb0c05a2ca
Introduce tag types 2019-06-13 22:58:16 +01:00
Jeff Becker
6714b06470
json logging option 2019-06-13 09:26:34 -04:00
Jeff Becker
eb10638497
Merge branch 'master' into ipv6-tun 2019-06-12 09:21:37 -04:00
Jeff Becker
4c1ac0e991
update for win32 parts 2019-06-12 09:20:00 -04:00
Jeff Becker
584cc61f8f
Merge remote-tracking branch 'origin/master' 2019-06-12 09:11:22 -04:00
Michael
d244674339
Unfuck integer metrics 2019-06-11 21:46:51 +01:00
Jeff Becker
2403ab8f86
ipv6 2019-06-11 12:44:05 -04:00
Jeff Becker
6bf2ec94e6
again 2019-06-10 12:27:36 -04:00
Jeff Becker
8b63326d8c
try fixing freebsd build 2019-06-10 12:26:19 -04:00
Jeff Becker
223f2702d3
Merge branch 'fix-big-ooooofff' 2019-06-06 06:53:54 -04:00
Michael
3822fe2341
Create util::MemFn and memFn to make binding callbacks easier 2019-06-02 22:19:10 +01:00
Jeff Becker
9deafa4cb8
use libuv 2019-06-02 17:17:05 -04:00
Michael
8323725509
Initial No-Op Crypto implementation 2019-05-29 09:46:34 +01:00
Rick V
7788d6ec3c
fix windows
lto stuff remains for now
since native builds work

(cherry picked from commit 37814472af5e7c35d514bae16d19b08050765d52)

i'm not porting the UNIX-tier cppfs thing

(cherry picked from commit d6edbd789534d4fd0bce6c8c2418347cd80bebdb)

none of this had to be specified directly ffs

(cherry picked from commit 5dbefa7131a6fe0b2006c90ecdba7e466fdd1ecc)

stop breaking shit reee

(cherry picked from commit 14be89902ccc75a7fc21863593da393ca976d0d4)
2019-05-05 23:01:51 -05:00
Jeff Becker
2a7ebce8f4
Merge remote-tracking branch 'origin/master' 2019-04-30 11:01:13 -04:00
Michael
725ee293c1
Refactor well named functionality in service::Endpoint into new struct 2019-04-30 02:06:31 +01:00
Jeff
01906c5d94 Merge remote-tracking branch 'origin/master' 2019-04-28 13:33:27 -04:00
Michael
9ee525a006
Fix shadowing warnings 2019-04-26 00:21:19 +01:00
Jeff Becker
af1529fa72
Merge remote-tracking branch 'origin/master' 2019-04-25 07:25:22 -04:00
Michael
4143472a17
Add cmake module to target a library as 'system', and fix a few warnings 2019-04-25 00:27:31 +01:00
Jeff Becker
8484e29c9b
turn more stuff into std::shared_ptr
remove dead codepaths
2019-04-23 10:47:23 -04:00
Jeff Becker
a2912ff860
Merge remote-tracking branch 'origin/master' 2019-04-23 09:12:36 -04:00
Michael
98e691f315
Tidy up more parts of the service/ directory 2019-04-22 22:28:10 +01:00
Jeff Becker
3a8cb0bfb5
add shell based hooks for service::Endpoint, also make format 2019-04-22 08:25:25 -04:00
Michael
33c80b7c16
Move service::Session to its own componet 2019-04-21 19:39:50 +01:00
Michael
94ad84363a
Move CachedTagResult and TagLookupJob to its own component 2019-04-21 19:39:50 +01:00
Michael
6bf54e0925
Remove AsyncKeyExchange, HiddenServiceAddressLookup and OutboundContext to their own components 2019-04-21 19:39:50 +01:00
Michael
2412ed59ee
Move SendContext to its own component 2019-04-21 19:39:50 +01: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
Jeff
bfdbf634dd
Merge pull request #523 from majestrate/master
recent stability pokes
2019-04-16 13:55:10 -04:00
Jeff Becker
9503cc66f0
add disk worker based file flusher logger
make format

remove package.json
2019-04-16 09:20:48 -04:00
Michael
9bc501bbf7 Integrate metric tank into build 2019-04-14 17:18:32 +01:00
Michael
544c5f9b61 Move metrics publishers to their own directory 2019-04-14 17:18:32 +01:00
Rick V
853d19209c
Revert "unbreak windows target"
select 64-bit target by default (since normal devs REEEEEEEE at the sight of 4 byte ptrs)
pretty much every _other_ linux/unix has a c++17 windows compiler

This reverts commit a844c61049.
2019-04-11 10:17:58 -05:00
Jeff Becker
40f8434851
syslog 2019-04-11 09:13:29 -04:00
Jeff Becker
9e24557429
refactor logger 2019-04-11 08:58:23 -04:00
Jeff Becker
a844c61049
unbreak windows target 2019-04-10 11:53:10 -04:00
Jeff Becker
e178a70929
use shared_ptr for event loop 2019-04-08 08:01:52 -04:00
Michael
561b997c93
Move IWP code to its own directory 2019-03-29 16:00:12 +00:00
Michael
426a9b0df5
Refactor iwp into multiple files 2019-03-29 16:00:12 +00:00
Michael
17b39b0ed4
Move UTP code to its own directory 2019-03-29 16:00:12 +00:00
Michael
5ef4e18827
Refactor utp into multiple files 2019-03-29 16:00:12 +00:00
Michael
a2a275dcf1
Remove dead linklayer code 2019-03-29 16:00:11 +00:00
Rick V
bbba2c0eea
improve windows select loop
add generic svr4 poll(2) event loop
2019-03-26 19:56:34 -05:00
Michael
f2c5d32399
Metric collection subsystem 2019-03-25 20:36:23 +00:00
Michael
acfff4ca5c
Threading structures for metrics 2019-03-25 20:36:23 +00:00
Jeff
ff18ba229a
Merge pull request #411 from majestrate/staging
change signing algo
2019-03-20 10:56:44 -04:00
Jeff Becker
ee283547b5
change signature scheme and fucking hope that the rest of the code doesn't fug itself over ;~; 2019-03-20 10:51:10 -04:00
Rick V
8443c5ab8c
Support abseil on i686-pc-winnt-gnu 2019-03-18 16:13:09 -05:00
Rick V
61fb9a9c82
added some notes to gear up for the #371 putback by @michael-loki
moved platform-specifc stuff *to* platform specifc lib
removed -Wno-format on windows and *actually* turn on proper format checking
here using compiler-specifc extension for C99
2019-03-18 16:13:08 -05:00
Jeff Becker
232a7ff010
more 2019-03-11 09:01:53 -04:00
Jeff
1a09a12ee0
Merge branch 'staging' into absl_mutex 2019-03-05 17:06:23 -05:00
Michael
c5a129ddff
Convert to use abseil synchronisation primitives 2019-03-03 21:20:38 +00:00
Michael
93399fdbb4
Make nlohmann::json part of the build 2019-03-02 02:32:18 +00:00
Michael
e6e19369e9
Create Printer - A general-purpose, stateful printer class 2019-02-24 23:46:44 +00:00
Michael
95a5c386fe
Initial type trait work 2019-02-24 23:46:44 +00:00
Michael
b80ecfa4d6
Use string_view for string_view 2019-02-24 23:46:44 +00:00
Jeff
5c941263e9
Merge pull request #339 from michael-loki/dht_context_testing
Solidify interfaces
2019-02-22 12:56:06 -05:00
Jeff Becker
eecc00211f
squash commits and make convotags more "reliable" (probably) 2019-02-21 12:47:35 -05:00
Michael
4132f883a7
Make libabyss mandatory 2019-02-20 22:08:49 +00:00
Rick V
0f45e286ff
XXX: the inline string_view constructors *should* be harmless on pre-C++17 platforms...
fix windows build
2019-02-18 17:50:04 -06:00
Michael
887fb4ac62
Replace insert(make_pair()) with emplace() 2019-02-18 10:35:23 +00:00
Michael
a0125ffe86
Move abyss/json to llarp/util/json 2019-02-15 23:43:26 +00:00
Jeff Becker
1d958d95de
* make rpc compile right
* make link sessions introspectable
* make utp write buffers fully flush each tick
2019-02-15 17:19:19 -05:00
Michael
90373b806c
Fix log tag after cmake changes 2019-02-15 20:49:10 +00:00
Michael
048fa83c39
Finish replacement of Router with AbstractRouter 2019-02-14 22:31:31 +00:00
Michael
ebf2800c3f Fixup windows 2019-02-14 00:22:21 +00:00
Michael
2997b38e35
Fixup after rebase 2019-02-12 10:24:43 +00:00
Michael
656843e9a3
Fix issues on debian 2019-02-12 01:19:38 +00:00
Michael
1aeacb0043
Refactor CMakeLists into distinct directories 2019-02-12 01:19:37 +00:00