Commit Graph

269 Commits

Author SHA1 Message Date
Jeff Becker
7a18d14fde make it compile 2020-09-23 14:39:06 -03:00
Jeff
a9d23d3ac3
use absolute path for route command (#1354)
* ignore tun interfaces on windows for mitigating foot cannons

* add flag for git add -p when using format verifier as git hook

* use explicit path for route command on windows

* fix typo

* fix typo

* remove hunk for win32 route exclusion based off being a tun interface

* add metric to win32 route command

* * refactor win32 route poking to use a common function for iterating over routes

* put interface in route poking for default route

* mnake it compile

* use correct route command on windows

* use fs::path for service::Identity::EnsureKeys
2020-09-23 07:06:11 -04:00
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
2020-09-22 15:04:15 -04:00
Jeff
3ab7db7723
macos route poking (#1333)
* fix up macos route poker logic

* fix typo

* use string_view

* add forgotten header

* full paths

* add debugging

* catch exception on adding route

* workarround for macos

* typofix

* typofix

* fix for macos

* fix command for macos

* because we autopoke remove explicit route poking in rpc

* probably final fix of macos route poking

* split routes instead of deleting them

* dynamic route poking

* move log statement for introset lookup and dont consider bad sessions as able to send

* send convotag reset frame when we have no session

* add exit map to rpc

* use split_any
2020-09-03 18:22:22 -04:00
Jeff
60f4d96ba5
proper route poking (#1330)
* route poking:

* remove popen() call, replace with reading /proc/net/route for getting default route
* dynamically poke and unpoke routes on runtime

* swap intros and fix rpc endpoint for version to return what the ui expects

* use std::string::find_first_not_of instead of using a lambda
2020-09-01 17:22:22 -04:00
jeff
52d20968a7 remove llarp::StrEq 2020-08-28 11:05:29 +00:00
Jeff Becker
1b4f5ee5ea
add forgotten win32 header 2020-08-25 17:24:38 -04:00
Jeff Becker
d39ed26ff0
add headers and fix type for windows 2020-08-25 10:12:40 -04:00
Jeff Becker
68e72d88fd
add forgotten header on macos 2020-08-25 09:51:39 -04:00
Jeff Becker
d4e1a44452
fix typo 2020-08-25 08:55:15 -04:00
Jeff Becker
184503dab1
change to unsigned char for CI 2020-08-25 08:48:35 -04:00
Jeff Becker
bc40453100
get rid of void pointer arithmatic and signed vs unsigned comparison 2020-08-25 08:41:38 -04:00
Jeff Becker
43a58b9c74
const correctness 2020-08-24 20:44:20 -04:00
jeff
f6f56029d3
working netlink route poker 2020-08-24 20:23:26 -04:00
jeff
668ddf837f
checks 2020-08-24 20:21:55 -04:00
jeff
0c3b57199a
fix initialization 2020-08-24 20:21:55 -04:00
jeff
abc55924e7
forgot header 2020-08-24 20:21:55 -04:00
jeff
5a8884cc2f
uncomment block 2020-08-24 20:21:55 -04:00
jeff
8472aea93f
initial netlink jizz 2020-08-24 20:21:55 -04:00
jeff
b0bb0b7609
initial route poking 2020-08-24 20:21:55 -04:00
Jeff Becker
301cb6d32f
fix issue #1320 (allow providing ip/port in bind section of config) 2020-07-30 10:36:36 -04:00
Jeff Becker
d7ff6c579c
address feedback from jason
* split up ipv6 netmask
* revert iwp ack interval change
* c++17-isms in ip range map
* lambda-ize nodedb
* mutable lambdas in transit hops
* perfect forwarding of args in abstract router
* mutable lambdas in lokid rpc client
* notes in readme about nproc
2020-07-02 11:13:32 -04:00
Jeff Becker
0f21eeccb0
* rework exit codepath to allow multiple exits
* rework net code for ip ranges to be cleaner
* clean up endpoint auth code
* refactor config to validate network configs before setting up endpoints
* remove buildone from path/pathbuilder.cpp so we don't spam connection attempts
2020-07-02 11:13:30 -04:00
Jeff Becker
3cdca30a74
more auth shit 2020-07-02 11:13:30 -04:00
Jeff Becker
f4971a88fd
use lokimq workers instead of llarp:🧵:ThreadPool 2020-07-02 11:07:34 -04:00
Rick V
a787db9b35 fix ipv4_hdr 2020-06-12 17:34:53 -05:00
Jeff Becker
114bdd5ce5
add move and copy constructors/assigment operators to ip_address 2020-05-23 16:07:20 -04:00
Jeff Becker
6af498092b
exit traffic via loki addresses 2020-05-23 16:07:19 -04:00
Jason Rhinelander
3bb24580a4 make format 2020-05-20 19:48:13 -03:00
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().
2020-05-20 19:18:28 -03:00
Jason Rhinelander
7f9160bb6e Untangle some interdependencies
macOS doing a shared library build is not working without untangling
some of the interdependencies.  This commit does that, at least enough
to get macOS to compile.

This isn't the cleanest as currently implemented (we have some net/
things in `liblokinet-platform` and some in `liblokinet`, and likewise
ev/vpnio.cpp is in `liblokinet` while the rest of `ev/*` is in
`liblokinet-platform`).
2020-05-20 19:18:28 -03:00
Jason Rhinelander
97088719e0 Avoid reserved __identifiers
Identifier names with `__` in them are reserved for the implementation.
One leading underscore followed by a lower-case letter is fine though
(leading underscore followed by *upper*-case is, however, also
reserved).
2020-05-20 19:18:28 -03:00
Jason Rhinelander
60d704b25d Remove dead code 2020-05-20 19:18:28 -03:00
Jason Rhinelander
f9bbc30c3d IsIPv4Bogon: constexpr array instead of a function-local static vector
The fixed-size array + not needing to do an atomic operation in the
function should allow better compiler optimization.

(And with C++17 the type and size are inferred).
2020-05-20 19:18:27 -03:00
Jason Rhinelander
bdc9c7bfa8 Move IPRange out of net.hpp; free up TruncateV6 etc.
- Move IPRange into its own net/ip_range.hpp

- Move the static net::IPPacket::TruncateV6, etc. functions to free
net::TruncateV6, etc. functions (now from net/ip.hpp instead of
net/ip_packet.hpp).

- Make net::TruncateV6 and net::ExpandV4 constexpr.

- Add IPRange::FromIPv4 factory function (to replace the iprange_ipv4
free function)
2020-05-20 19:18:27 -03:00
Jason Rhinelander
72bf215da4 Move IPPacket header (part 1)
Rename net/ip.{cpp,hpp} to net/ip_packet.{cpp,hpp}.

(Doing this in two commits because I want to repurpose ip.hpp/ip.cpp,
and want git to figure out the history properly).
2020-05-20 19:18:27 -03:00
Rick V
918a09c0cf fix sockaddr win32 and collapse headers on the unix side 2020-05-18 15:13:45 -05:00
Jason Rhinelander
a45bec7c4f Removed RPI definition
This was a long-obsolete fix for things that don't matter anymore.
2020-05-17 21:28:25 -03:00
Jason Rhinelander
26ecf23ad8 Silence various warnings 2020-05-17 21:28:17 -03:00
Jeff Becker
fc5b28b66f
const correctness 2020-05-15 14:07:22 -04:00
Jeff Becker
1780e86faa
fix up unit tests, make them all pass 2020-05-15 08:38:04 -04:00
Stephen Shelton
4dd4327f36
IpAddress::toString() support for IPv6 2020-05-11 14:52:30 -06:00
Stephen Shelton
043f993e41
Return stream in operator<<(stream, IpAddress) 2020-05-11 14:47:09 -06:00
Stephen Shelton
0a40892867
Implement SockAddr operator<() and operator==() 2020-05-11 11:55:36 -06:00
Stephen Shelton
1c7d57f207
Don't forget to return 2020-05-11 11:42:38 -06:00
Stephen Shelton
c0f58c8159
Properly read in ExitInfo's address 2020-05-11 10:46:53 -06:00
Stephen Shelton
e85105e738
Implement SockAddr's operator<<ostream 2020-05-11 10:17:41 -06:00
Stephen Shelton
dfe71309f1
Add to/from in6_addr to SockAddr 2020-05-11 10:14:07 -06:00
Stephen Shelton
fd145d6eeb
Make FIXME throws uniquely identifiable 2020-05-11 10:00:03 -06:00
Stephen Shelton
839fb42ba4
Hard code RPC's expectedHostname to 'localhost' 2020-05-11 09:47:26 -06:00
Stephen Shelton
0cd5d7a060
Derp 2020-05-11 09:22:42 -06:00
Stephen Shelton
cd44caccaf
Attempt to get this SockAddr refactor up and running 2020-05-11 09:11:44 -06:00
Stephen Shelton
78d09f2ae5
Support SockAddr in from sockaddr and friends 2020-05-08 16:52:00 -06:00
Stephen Shelton
e944bcb28a
Unit tests and fixes for SockAddr::fromString() 2020-05-08 14:33:44 -06:00
Stephen Shelton
0b54087689
Begin implementing SockAddr 2020-05-08 11:23:21 -06:00
Stephen Shelton
aee96e53a3
Refactor Addr -> IpAddress/SockAddr 2020-05-06 14:38:44 -06:00
Stephen Shelton
1cab83ad01
Expand upon IpAddress header, take in feedback 2020-05-04 15:36:08 -06:00
Stephen Shelton
dff170712f
Gut Addr, replace with stubbed SockAddr and IpAddress 2020-05-04 15:17:16 -06:00
Jeff Becker
7e4fdc5b0e
check for zero address for bogons 2020-05-04 15:05:33 -04:00
Jeff Becker
f1edca9fa1
additional cleanup of cruft 2020-05-04 14:39:14 -04:00
Jeff Becker
e33a1a2e0f
proper autodetect of ifname and ifaddr 2020-05-04 12:51:57 -04:00
Stephen Shelton
42a7bcd434
Less invasive fix for Addr 2020-05-04 11:08:25 -04:00
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.
2020-05-01 17:43:27 -03:00
Rick V
df634b7775
remove a ton of ded win32 code 2020-04-20 19:05:53 -05:00
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.
2020-04-07 12:38:56 -06:00
Jeff Becker
7ba30eec25
squash commits 2020-03-11 16:55:12 -04:00
Linux User
fd23fd6894
32-bit linux patches 2020-02-25 15:48:07 -06:00
Jason Rhinelander
27025030ce Renamed uint128.h -> uint128.hpp 2020-02-24 14:27:44 -04:00
Jason Rhinelander
3fedd5ba6b Avoid wrong-order initialization on big endian 2020-02-24 14:27:44 -04:00
Jason Rhinelander
2093f94244 Make uint128_t use big/little endian layout internally
Thus if someone wants to memcpy out of it it will have the expected
endianness of the internal data.
2020-02-24 14:27:44 -04:00
Jason Rhinelander
454abb4f9f Avoid copies in mutators
Reimplement operators in terms of mutators, rather than vice versa, so
that mutators don't have to make a copy.
2020-02-24 14:27:44 -04:00
Jason Rhinelander
4207a7cfa3 Rewrite In6ToHUInt to be endian agnostic 2020-02-24 14:27:44 -04:00
Jason Rhinelander
0839c16f19 Final abseil purge
Bye-bye Google Boost.
2020-02-24 14:27:44 -04:00
Jason Rhinelander
54186c4a89 Replace absl string_view with string_view from lokimq
When we add loki-mq has a dependency we can just alias it, but for now
it's easier to copy the header than add the whole submodule library.
2020-02-24 14:27:44 -04:00
Jason Rhinelander
3be7eb789b Endian defines fix for macOS
It seems `__BYTE_ORDER`/`__LITTLE_ENDIAN`/`__BIG_ENDIAN` aren't defined
on macOS, so `if __BYTE_ORDER == __BIG_ENDIAN` was true which made macOS
take the big endian path *twice* (which cancelled out the big endian
conversion).

This makes util/endian.hpp define __LITTLE_ENDIAN__ or __BIG_ENDIAN__
everywhere, and errors if it can't be set.
2020-02-07 03:29:50 -04:00
Jason Rhinelander
9283aac4b6 Big endian fixes 2020-02-07 00:56:09 -04:00
Jeff Becker
a96fd645c5
remove side effect from address detection assert 2020-01-08 09:57:23 -05:00
Jeff Becker
8817e7fe21
fix include 2019-12-15 07:09:19 -05:00
Jeff Becker
c9d38d421b clang fixes 2019-12-10 11:49:32 -07:00
Jeff Becker
4f87a95f66 fixes for travis 2019-12-10 11:49:32 -07:00
Stephen Shelton
93b8832026
Merge branch 'dev' into private-keys-backup-support 2019-12-03 11:20:45 -07:00
Jeff Becker
0828307906 fix address mapping bug 2019-11-29 19:11:14 -04:00
Jeff Becker
ac686a9329
remove valgrind access errors 2019-11-22 16:23:20 -05:00
Jeff Becker
0ec4e583d4
initialize with zeros 2019-11-22 16:23:20 -05:00
Stephen Shelton
1666498405 Replace bencode_write_version_entry with a more general-purpose function for writing bencoded dictionary entries 2019-11-22 10:39:35 -07:00
Rick V
df29052a75
fix windows 2019-10-30 18:02:34 -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
c69165dad3 try making it work in the case that is broken on travis 2019-10-22 11:20:26 -04:00
jeff
1621ca676b Merge remote-tracking branch 'upstream/dev' into ed25519-signing 2019-10-22 11:08:52 -04:00
jeff
869ab0b652 Merge remote-tracking branch 'upstream/dev' into vpn-api-2019-10-03 2019-10-21 08:01:29 -04:00
jeff
1e3cd03880 make format 2019-10-16 10:11:07 -04:00
Stephen Shelton
7dc1351eba Add missing #endif (presumably from 281fbff) 2019-10-14 09:56:32 -06:00
jeff
265da6f37b use get_service_nodes rpc endpoint 2019-10-14 11:38:34 -04:00
jeff
0e2fb6abd5 revert to ed25519 for signing, this breaks everything (again). 2019-10-14 09:47:06 -04:00
Jason Rhinelander
281fbff42f Fix build on xenial
- xenial's cmake version (3.5.1) builds everything fine and test suite
  passes, so lower the minimum to that.

- add a hack for xenial's kernel header & glibc version breaking if both
  net/if.h and linux/if.h get included.  The only thing we actually need
  from net/if.h that linux/if.h doesn't have is `if_nametoindex`, so
  just hack that definition in for xenial's specific glibc/kernel header
  versions.
2019-10-11 17:26:12 -03: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
32ed821763 Merge remote-tracking branch 'upstream/dev' into multithreaded-cryptography 2019-10-01 10:51:28 -04:00
Rick V
ed6ef2d527
clang-format 2019-09-23 21:22:27 -05:00
Rick V
cbdbe94bab
skip null adapters 2019-09-23 21:22:27 -05:00
Rick V
ade2ae1e9a
ok let's see how we're locked up
more debug
2019-09-23 21:22:27 -05:00
Rick V
4389e3fee2
try install .net manually
use full path

test
2019-09-23 21:22:26 -05:00
Jeff Becker
d04762ab49
unstaged changed 2019-09-12 10:34:27 -04:00
Jeff Becker
da6a3bf9bb
Merge remote-tracking branch 'origin/master' into iwp-multi-ack 2019-09-11 09:56:51 -04:00
Jeff Becker
fd787cc56d
try more ranges 2019-09-09 08:10:26 -04:00
Jeff Becker
1adae338ce
Merge remote-tracking branch 'origin/master' 2019-09-04 07:58:02 -04:00
Michael
1aec0dfa2b
Move logging to subdirectory 2019-09-03 20:52:27 +01:00
Jeff Becker
c01112e4b7
tracy lock contention testing and other fun things 2019-09-03 11:56:56 -04:00
Rick V
b3a975ff8e
sun fix
fix testing on sun
2019-08-27 06:53:08 -05:00
Michael
7cb1b525c9
Dump more info from router contact 2019-08-19 23:25:46 +01:00
Michael
16cdfbd5f0
clang-tidy modernize pass 2019-08-12 16:52:58 +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
Jeff Becker
b4af87aa42
have IPPacket::srcv6 and IPPacket::dstv6 check for ipv4 packets and expand them to ipv6 2019-07-31 08:26:11 -04:00
Michael
ac8624698d
Fix some string_view problems 2019-07-21 16:57:11 +01:00
Jeff Becker
b2fd0e86cc
fix network interface iteration infinite loop 2019-07-16 15:16:49 -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
488695047f
Remove redundant else blocks 2019-07-09 22:54:46 +01:00
Jeff Becker
f5291951f6
use logical or not bitwise or and change function name to be plural 2019-07-09 15:20:01 -04:00
Jeff Becker
84407b3557
make it compile 2019-07-09 09:54:13 -04:00
Jeff Becker
fb803cfe11
lel 2019-07-09 09:50:50 -04:00
Jeff Becker
58005c5f81
Merge remote-tracking branch 'origin/master' into ipv6-tun 2019-07-08 10:17:21 -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
Jeff Becker
c4aaa80e75
use sane defaults and deprecated "auto" as it's horribly bad style 2019-07-03 10:32:51 -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
b51f7d8015
Convert to load config in config loader 2019-07-02 01:58:39 +01:00
Jeff Becker
bcde59569e
make freebsd compile 2019-06-18 09:10:44 -04:00
cathugger
ddaf0834e2
net/ip: correct IPv6 fragment processing, also check for length before modifying 2019-06-12 03:04:05 +03:00
cathugger
53f3be2013
net/ip: skip IPv6 option headers 2019-06-12 02:42:05 +03:00
cathugger
72b1ea613c
make format 2019-06-12 00:28:55 +03:00
cathugger
a9dac85c28
fix stuff 2019-06-12 00:27:06 +03:00
cathugger
88acadf415
net/ip: update names 2019-06-11 23:56:48 +03:00
cathugger
e085f3e6c5
net/ip: IPv6 packet deltachecksum 2019-06-11 23:52:13 +03:00
cathugger
6730af207f
net/ip: IPv6 TCP/UDP delta chksum funcs 2019-06-11 23:30:59 +03:00
cathugger
891f5d156c
net/ip: cleanup 2019-06-11 23:17:59 +03:00
Jeff Becker
de51ef23bf
more 2019-06-11 14:23:53 -04:00
Jeff Becker
2403ab8f86
ipv6 2019-06-11 12:44:05 -04:00
Michael
3f53965b71
Remove all use of IBEncodeMessage 2019-05-24 03:01:36 +01:00
Jeff Becker
b86e834e1b
Merge remote-tracking branch 'origin/master' 2019-05-20 08:25:57 -04:00
Michael
dd8a93a400
Apply rule of zero to code base 2019-05-19 23:11:07 +01:00
Jeff Becker
4862dec4be
commit recent stuff 2019-05-19 10:39:50 -04:00
Michael
f734ffeae4 Fixup MSVC build 2019-05-15 23:03:24 +01: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
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
Jeff Becker
9bc7508b5b
remove nuint128_t 2019-05-03 09:25:57 -04:00
Jeff Becker
5b49008bca
more 2019-05-02 12:23:31 -04:00
Jeff Becker
4404d272b2
remove uint128_t for now 2019-05-02 11:19:21 -04:00
Jeff Becker
e060082441
hook every dns for .loki and .snode when applicable
make {n,h}uint{32,16}_t templated type.
2019-05-01 09:40:10 -04:00
Michael
9ee525a006
Fix shadowing warnings 2019-04-26 00:21:19 +01:00