Commit Graph

4763 Commits

Author SHA1 Message Date
Jeff Becker
635f4bcd8c make it compile 2022-01-31 10:53:48 -05:00
Jeff Becker
5286d442fb updates:
* add udptest example
* fix up udp codepath in liblokinet
2022-01-31 10:53:48 -05:00
Jeff Becker
65b29a1b70 add liblokinet custom logger 2022-01-31 10:53:48 -05:00
Jeff Becker
f5157c31da make it compile 2022-01-31 10:53:48 -05:00
Jeff Becker
b225ec1043 thread safety stuff 2022-01-31 10:53:48 -05:00
Jeff Becker
ba57ab04aa wire up liblokient_udp_* 2022-01-31 10:53:48 -05:00
Jeff Becker
1c70b0f42f add lokinet_hex_to_base32z 2022-01-31 10:53:48 -05:00
Jeff Becker
bbb082931a more logging 2022-01-31 10:53:48 -05:00
Jeff Becker
66de680884 sanity check 2022-01-31 10:53:48 -05:00
Jeff Becker
8c8f97adda more logging 2022-01-31 10:53:48 -05:00
Jeff Becker
38d4cec7d1 log errors on decoding 2022-01-31 10:53:48 -05:00
Jeff Becker
c5b5ff7810 typo fix 2022-01-31 10:53:48 -05:00
Jeff Becker
2428cc189e llarp::BootstrapConfig update
* make routers member a llarp::BootstrapList
2022-01-31 10:53:48 -05:00
Jeff Becker
c4b1a9c074 lokinet_add_bootstrap_rc
* allow bootstrap lists to be passed in
2022-01-31 10:53:48 -05:00
Jeff
fc444741f1 move constant to new header
create llarp/constants/time.hpp for time/duration constants
2022-01-27 11:11:57 -05:00
Jeff
5fac6c84d8 detect timeskip and thaw network when we think it happened. 2022-01-27 10:59:04 -05:00
Jeff
38c6d99375 wire up sigusr1 to trigger a network thaw on non win32 platforms 2022-01-27 09:59:52 -05:00
majestrate
27619f5fb4
Merge pull request #1838 from majestrate/sd_notify_extra_info-2022-01-13
redo systemd status line
2022-01-14 17:01:52 -05:00
Jeff
b3d9cd463f route poker: allow not blackholing routes.
allow runtime configuration to disable ip blackholing.
2022-01-14 13:03:01 -05:00
Jeff
205584acdf redo systemd status line to include number of paths and endpoint count. optionally warn about low path success. 2022-01-14 11:18:07 -05:00
majestrate
2c44ffe85b
Update llarp/router/route_poker.cpp
Co-authored-by: Jason Rhinelander <jason@imaginary.ca>
2022-01-11 12:44:05 -05:00
Jeff
27ba3e044d
prevent segfault in route poker if Init() is not called 2022-01-03 10:16:08 -05:00
majestrate
9e4bd2cd44
Merge pull request #1801 from majestrate/introset-publish-spam-fix-2021-11-16
prevent introset publish spam
2021-12-27 10:04:48 -05:00
Jeff Becker
061aebc964
reword auto-routing config comment 2021-12-15 18:42:22 -05:00
Jeff Becker
14ffdb6639
configurable route poker
this allows you to use exit nodes without forcing routes over the interface, useful for using lokinet with an exit and selectively routing over the lokinet interface using an external socks proxy or binding to device explicitly.

* make route poker configurable, defaults to enabled but allows disabling it on runtime if desired
* add config option [network]:auto-routing to enable/disable route poker
2021-12-15 18:42:22 -05:00
Jeff Becker
da887dc559
implement exit node pooling, allows users to use multiple exits for an address range.
mappings per ip stick to the same exit, each new ip is mapped to a random exit in the specified pool.

make exit-auth multi value
2021-12-15 16:26:21 -05:00
Jeff
776e9227fd
make serivce::Endpoint::EnsurePathToService have a default timeout as a named constant. 2021-12-15 15:25:53 -05:00
Jeff
301b19bd0f
do not send buggy reply as rpc 2021-12-15 15:25:53 -05:00
Jeff
388fc53380
match io loop event order on windows/apple to match linux.
on win32/apple reading packets from the interface does not count as an io operation.
manually trigger pump on win32/apple to pretend that it is an io event.
add platform quark function MaybeWakeUpperLayers on vpn::Interface to manaully wake up the other components on platforms that need that (ones on which packet io is not done via io events).
on non linux platforms, use uv_prepare_t instead of uv_check_t as the former triggers before blocking for io, instead of after. this better matches linux's order of operations in libuv.
2021-12-15 15:25:53 -05:00
Jeff Becker
0e2b0edaf6
when lokinet looses ip4 connectivity libunbound used to freak out and only use ip6 after such an event.
as a result dns queries stop working because we blackhole ip6 routes if exit mode is on.
this prevents this case from being hit.
2021-12-03 16:12:10 -05:00
Jeff Becker
ec8d990163
demote log statement levels 2021-11-28 09:57:10 -05:00
Jeff Becker
172c2dec45
create new constexpr for the staleness window for introsets and use it in publishing introsets and intro selection 2021-11-16 12:22:08 -05:00
Jason Rhinelander
189c4bfba4
Also consider last publish; eliminate unwanted condition
We don't really carry about when the last regen was attempted, but
rather about when the last publish was attempted (or succeeded).
2021-11-16 12:21:57 -05:00
Jeff Becker
8ba03de44e
match timeouts in introset selection spread with logic for publishing 2021-11-16 10:57:17 -05:00
Jason Rhinelander
5115162066 Use libuv's cached current time for time_now()
We are calling time_now() a huge amount, and it is a major consumer of
CPU cycles, but we don't need it: most of the time the current event
loop time is enough.
2021-11-15 18:32:05 -04:00
Jason Rhinelander
b2ee003329 Optimization: eliminate unneeded shared_ptrs
We have a few cases where we're making an extra shared_ptr which we copy
into a lambda, which then results in an extra unnecessary refcount
decrement in the parent; this changes them to give an rvalue reference
to the lambda to avoid the extra incr/decr instead.

The one in Session::Pump is particularly noticeable and shows up in
profiling.
2021-11-15 18:32:03 -04:00
Jason Rhinelander
7a04911b9b Avoid std::function in hot pump code
We're seeing overhead here of the std::function invocation, which we can
easily avoid in this case by not using a std::function around the
callback.
2021-11-15 18:29:26 -04:00
Jason Rhinelander
09c2b31b25 Move paths pumping into PumpLL 2021-11-15 18:24:07 -04:00
Jason Rhinelander
687b54f860 Abstract & simplify logic 2021-11-15 17:15:16 -04:00
Jason Rhinelander
711038d150 Remove debug comment 2021-11-15 16:57:17 -04:00
Jason Rhinelander
0fe7153f6e Fix client latency bug; De-shared_ptr IHopHandler queues
- Replace m_FlushWakeup with a call to the router's god mode pump
  method.  m_FlushWakeup apparently isn't enough to get things out, and
  we can end up with incoming packets that don't get properly handled
  right away without it.

- The shared_ptr around the ihophandler queues isn't needed and is just
  adding a layer of obfuscation; instead just exchange the list directly
  into the lambda.

- Use std::exchange rather than swap

- A couple other small code cleanups.
2021-11-15 13:39:57 -04:00
Jason Rhinelander
70553c7627 Remove hopeless flush
The TriggerPump just below this is *already* going to trigger a flush,
so the extra flush call here can't do anything useful (and in
particular, it won't clear up the queue *immediately*, which is what
this code looks like it was aimed at doing).
2021-11-15 13:39:52 -04:00
Jason Rhinelander
fbc5cb0a6d Add another missing pump trigger 2021-11-15 13:38:24 -04:00
Jason Rhinelander
bce7e2e56d Pump outbound context 2021-11-15 13:38:21 -04:00
Jason Rhinelander
846577a0aa Add missing inbound traffic pump trigger 2021-11-15 13:38:10 -04:00
Jason Rhinelander
8cdde74020 Simplify 2021-11-15 13:38:08 -04:00
Jason Rhinelander
b3a8160c89 Pump hidden context sooner
This has to happen before pumping links because it is putting things on
links.
2021-11-15 13:38:05 -04:00
Jason Rhinelander
0924dd8862 Remove dead declaration 2021-11-15 13:38:02 -04:00
Jason Rhinelander
f9395cd5dd Cleanup: avoid pointless copy of this pointer 2021-11-15 13:38:00 -04:00
Jason Rhinelander
9844d358e6 Fix packet delay creep
- Make the main PumpLL also pump hidden services, rather than using
  separate wakers in each TunEndpoint.  It seems there is some
  interactions that just one or the other is not enough.

- Eliminate TunEndpoint send queue -- it isn't needed as we can just
  send directly.
2021-11-15 13:37:57 -04:00
Jason Rhinelander
99b12940ad Cleanups 2021-11-15 13:37:54 -04:00
Jason Rhinelander
e47d3098ac Increase plaintext queue size from 32 to 512
In testing we were sometimes hitting a full queue error, which makes
sense because the queue size seems really small.

Increase it to 512.
2021-11-15 13:37:49 -04:00
Jason Rhinelander
78cc466bf2 Rename PumpLL -> TriggerPump
And rename the actual pump implementation back to PumpLL.
2021-11-15 13:37:47 -04:00
Jason Rhinelander
031ea7aa37 Get rid of external event loop direct wakeups
If something needs to wake up the event loop it should be using an
async, as we are now with PumpLL(); but we had various code triggering a
wakeup, expecting that PumpLL gets called on every wakeup, which isn't
true anymore.
2021-11-15 13:36:44 -04:00
Jason Rhinelander
74215fc44c Fix link layer delivery race condition (fix random ping delays)
We trigger a pump immediately, but this is racey because we add to our
plaintext data in a worker thread; if the worker thread runs after the
pump then it ends up leaving plaintext to be handled, but there's no
wakeup until the next one.

This was the cause of seeing a random +1s and bunching added to ping
responses sometimes: it wasn't until the *next* ping goes through the
network that the plaintext queue gets processed, at which point it
flushes the old one and often the new one together.

The fix here gets rid of the map of sessions needing wakeups and instead
adds an atomic flag to all of them to let us figure out which ones
need to be flushed.
2021-11-15 13:36:28 -04:00
Jason Rhinelander
aa1dc83459 Simplify 2021-11-15 13:36:13 -04:00
Jason Rhinelander
362fda5a56 Combine empty + pop into single call 2021-11-15 13:36:09 -04:00
Jason Rhinelander
b03f3c2d79 Remove another unwanted unconditional PumpLL 2021-11-15 13:36:03 -04:00
Jason Rhinelander
9113a6b36b Triggered pumping
This redoes how/when we pump so that we should only be calling the
idempotent PumpLL() when we actually have (or may have) something to
pump.
2021-11-15 13:35:57 -04:00
Jason Rhinelander
bfc6d35b33 Simplifications & C++17
- Modernize some iterator loops
- Simplify a couple places by using `if (init; ...)`
- Replace various std::binds with lambdas
2021-11-14 10:11:00 -04:00
Jason Rhinelander
41807f1763 transit hop: drop instead of flushing when full
If full happens we are going to trigger a bunch of flushes which
probably isn't very useful, so drop instead.
2021-11-14 10:10:58 -04:00
Jason Rhinelander
cf5c4e7284 outbound_message_handler: skip instead of aborting on removed paths 2021-11-14 10:10:19 -04:00
Jason Rhinelander
633431be66 Make outbound message queue PumpLL again if it doesn't send all 2021-11-14 10:10:19 -04:00
Jason Rhinelander
faf95cbd0a Allow a nullptr callback for event loop PumpLL 2021-11-14 10:07:31 -04:00
Jeff Becker
8a9025e234 only pump path context in idempotent pumpll 2021-11-14 10:07:31 -04:00
Jeff Becker
bb86996acf make event loop pump function non idempotent 2021-11-14 10:07:31 -04:00
Jeff Becker
8744c93944 prevent 100% cpu usage on service nodes
call_soon wakes up the mainloop and is often reentrant, we dont want to
ever way up the event loop but we also want to always defer the call so
we always use the workers
2021-11-14 10:07:11 -04:00
Jeff Becker
22d4b88edc
make PumpLL idempotent to reduce cpu use a bit 2021-11-09 11:59:57 -05:00
Jason Rhinelander
1ddfb7420a
Merge pull request #1791 from majestrate/exclude-failing-from-queue-2021-10-29
exclude fully failed nodes from service node testing list
2021-10-29 14:44:16 -03:00
Jason Rhinelander
0ec50e6624 Fix comment typo 2021-10-29 11:52:54 -03:00
Jeff Becker
fcba709fcb
do not requeue nodes for testing from failing queue if we do not have them marked as failing anymore 2021-10-29 10:46:50 -04:00
Jeff Becker
6c70022dcc
check for intersecting ip ranges correctly, add unit test 2021-10-22 15:53:19 -04:00
Jason Rhinelander
52492c6253 make format 2021-10-16 15:16:55 -03:00
Jason Rhinelander
1e22417ade Add missing deprecated copy assignment operator
Clang-13 warns (and -Werror dies) without it.
2021-10-16 15:16:55 -03:00
Jason Rhinelander
50449038b4 Another gcc-11 fix
GCC is wrongly warning that `h` is uninitialized here, but it clearly
isn't.  Work around it.
2021-10-16 15:02:06 -03:00
Sean
e11a94c95c
RPC call for summary get_status (#1742)
* RPC call for summary get_status

* lint

* update with review notes

* further review points

* uint64_t
2021-10-13 07:20:36 -04:00
Jason Rhinelander
0768593fa5
Merge pull request #1762 from majestrate/v6-base-address-configuration-fix-2021-10-06
catch ipv6 ioctl throwing when someone runs lokinet with no ipv6
2021-10-12 20:21:04 -03:00
Jeff
1846c3e3d8
prevent bizare half open state. (#1754)
* attempt path timeout bullshittery fix

* make sure ServiceInfo always has its address set up

* do not copy intros in constuctor, ammend logging and
add assert
2021-10-12 17:37:01 -04:00
Jeff Becker
937d07b6ce
catch ipv6 ioctl throwing when someone runs lokinet with no ipv6 2021-10-06 18:08:08 -04:00
Jeff Becker
5e9f9686e7
set base v6 address to nullopt when explicit empty string is provided 2021-10-06 16:22:49 -04:00
Jeff
24681fd35d
Merge pull request #1759 from majestrate/iterate-dir-in-order-2021-10-06
iterate through directory entries in lexigraphical order
2021-10-06 15:15:26 -04:00
Jeff
1d955cf28d
Update fs.hpp
style nit
2021-10-06 14:37:09 -04:00
Jeff Becker
00f81b1dac
iterate through directory entries in lexigraphical order 2021-10-06 14:04:11 -04:00
Jeff Becker
d882f1a302
some compilers hated [[maybe_unused]] so use (void) when they are unused 2021-10-06 11:10:49 -04:00
Jeff Becker
cf187ddffc
fix up logging, put _log into anonynous namespace, make only log trace nop in release builds 2021-10-06 11:10:48 -04:00
Jeff Becker
20814a4adc
use llarp:: prefix for LogError 2021-10-06 11:10:48 -04:00
Jeff Becker
1b06e263fb
update log statement for win32 2021-10-06 11:10:48 -04:00
Jeff Becker
2d5faccb9f
refactor for apple 2021-10-06 11:10:48 -04:00
Jeff Becker
7d07dea235
fix up gripes in source_location
* get rid of columns we dont need those
2021-10-06 11:10:48 -04:00
Jeff Becker
acdb8a19a6
for some reason [[maybe_unused]] is hated by buster 32 bit x86 so we do something else
to appease that compiler.
2021-10-06 11:10:48 -04:00
Jeff Becker
18c5b43e63
use inline source_location implementation for android too 2021-10-06 11:10:48 -04:00
jeff
0546dab2e3
make source location happy on macos
* because of course apple doesn't provide any implementation (lmao) we provide one ourself
2021-10-06 11:10:48 -04:00
Jeff Becker
5c457ff486
refactor logging to use std::source_location
* use std::source_location instead of godawful macros in logging
* remove unused/absolutely haram af json logstream
* fix bug in android logger where it doesn't respect eLogNone
2021-10-06 11:10:48 -04:00
Jeff Becker
9c37e0146e
make it compile again 2021-09-24 17:15:50 -04:00
Jeff Becker
45b5fec314
make it compile again (squashme) 2021-09-24 16:51:03 -04:00
Jeff
ed271de715
make lokinet-util library static
every other lokinet internal lib is static, but liblokinet-util was not, this fixes that.
2021-09-18 19:54:06 -04:00
Jeff Becker
d1246947f7
SystemD DNS fix:
when dns is port 53 call SetLinKDNS otherwise call SetLinkDNSEx as on older versions of systemd-resolved SetLinkDNSEx is not available.
2021-09-16 17:52:30 -04:00
Jeff Becker
9ad63140f2
use std::sample to grab MaxGossipPeers when populating std::unordered_set 2021-09-03 17:45:08 -04:00
Jeff Becker
a739e7b532
try not to prefer outbound vs inbound link sessions
before when we get the list of router ids for gossip it was highly bias towards outbound sessions.
instead now we get a full list of link session router ids in random order, truncate them to be at most MaxGossipPeers number of keys, and then put them into an unordered set
2021-09-03 17:45:08 -04:00
Jeff Becker
d91ce53da1
limit RC gossip to 20 peers max 2021-09-03 17:45:08 -04:00
Jeff Becker
344d0a2f2d
format 2021-09-03 15:21:08 -04:00
Jeff Becker
2ee43c2162
set ipv6 address on apple to hardcoded value 2021-09-03 15:17:46 -04:00
Jason Rhinelander
c52782ab32 Add IPv6 addr/routing for macos 2021-09-03 15:35:33 -03:00
Jeff Becker
b52cf97e11
override ShouldHandlePacket on android to bypass non .snode/.loki dns hooking. 2021-09-03 14:03:55 -04:00
Jason Rhinelander
7fe5ffb209 Fix IPv4 routes are disabling exit
(This was actually already working because macOS is buggy and doesn't
actually remove routes other than the default).
2021-09-03 12:06:27 -03:00
Jeff Becker
0d64de17c8
tmp commit for debugging (revert me) 2021-09-02 18:46:39 -04:00
Jeff Becker
82314a3cac
add comment about android dns 2021-09-02 18:36:38 -04:00
Jason Rhinelander
831cc23de1 Remove obsolete bigs
Removes stuff we didn't end up needing/using:
- Lokinet.modulemap
- apple bits from lokinet.cpp (we don't use lokinet.cpp at all on macos
  anymore).
- dnsproxy/extension C++ headers
- apple-specific network extension config in llarp::config::Config
2021-09-02 19:19:54 -03:00
Jason Rhinelander
38335f13a2 Remove debugging 2021-09-02 19:09:02 -03:00
Jason Rhinelander
8aef5d742d Re-enable LTO; target macos 10.12+ 2021-09-02 19:07:40 -03:00
Jeff Becker
10cd331863
invert logic for android dns hook 2021-09-02 15:23:13 -04:00
Jason Rhinelander
f51d0a80a2
Forward-declare ub_ctx/ub_result
Avoids needing unbound.h in the search path to include the
unbound_resolver.hpp header.
2021-09-02 14:17:11 -04:00
Jason Rhinelander
a7decd5ec3
Silence warnings 2021-09-02 14:17:10 -04:00
Jason Rhinelander
e11efe9bc5
Reformat 2021-09-02 14:17:10 -04:00
Jason Rhinelander
9dd604820f
Unleak exit mode DNS via unbound DNS trampoline on (macOS)
When we enable/disable exit mode on this restarts the unbound DNS
responder with the DNS trampoline (or restores upstream, when disabling)
to properly route DNS requests through the tunnel (because libunbound's
direct requests don't get tunneled because unbound is inside the network
extension).
2021-09-02 14:17:10 -04:00
Jason Rhinelander
0f097450d7
Remove debug 2021-09-02 14:17:10 -04:00
Jason Rhinelander
f00e78c1a3
Add DNS trampoline
This runs a DNS listener on localhost:1053 that bounces requests to the
upstream DNS through the tunnel.  The idea here is that, when we turn on
exit mode, we start libunbound bouncing the requests through the
trampoline (since if it makes direct requests they won't go through the
tunnel).

(The actual libunbound configuration is still to follow).
2021-09-02 14:17:10 -04:00
Jason Rhinelander
fd759914b6
Remove unused vars 2021-09-02 14:17:10 -04:00
Jason Rhinelander
e84390748d
Add RouteManager; make exit on/off work 2021-09-02 14:17:10 -04:00
Jason Rhinelander
c74dcba463
Add lokinet subnet to default routes
Mac doesn't route to a tunnel's ip range by default.  WTF.
2021-09-02 14:17:10 -04:00
Jason Rhinelander
9afa95cd7a
Remove unused/empty/no longer used apple headers 2021-09-02 14:17:10 -04:00
Jason Rhinelander
3527c9cdb5
Remove more unused dns-proxy files 2021-09-02 14:17:10 -04:00
Jason Rhinelander
58da228f62
Generate a default client lokinet.ini on startup if it doesn't exist
Thus when a user goes looking for it they'll find the (commented out)
default in the right place and can edit it.

(That right place is: ~/Library/Containers/com.loki-project.lokinet.network-extension/Data/lokinet.ini)
2021-09-02 14:17:09 -04:00
Jason Rhinelander
fec3598e16
Remove no-longer-used framework.mm 2021-09-02 14:17:09 -04:00
Jason Rhinelander
2964051f0d
Remove swift version (do not squash)
Don't squash this commit so that the swift version stays around in
history in case we need to resurrect it again some day (i.e. when Apple
decides to kill off Objective-C support).
2021-09-02 14:17:09 -04:00
Jason Rhinelander
329da951b7
Apple OS interface cleanup & refactoring
- Add a C callback interface (context_wrapper.h) between lokinet and the
  objective-C code so that:
  - we can use objective-C (rather than objective-C++), which seems more
    likely to be supported by Apple into the future;
  - we minimize the amount of code that needs to be aware of the Apple
    APIs.
  - this replaces apple logger objective c++ implementation with a plain
    c++ implementation that takes a very simple C callback (provided
    from the obj-c code) to actually make the call to NSLog.

- Add various documentation to the code of what is going on.

- Send all DNS traffic to the primary IP on the tun interface.  The
  match prefixes simply don't work as advertised, and have weird shit
  (like even if you get it working for some domains, "instagram.com"
  still doesn't because of god-knows-what Apple internal politics).

- Drop the dns proxy code as we don't need it anymore.

- Don't use 9.9.9.9 for default DNS.  (We might consider the unfiltered
  9.9.9.10 as an alternative default, but if we do it should be a global
  lokinet change rather than a Mac-specific change).

- Parse a lokinet.ini in the data directory, if it exists.  (Since we
  are sandboxed, it is an app-specific "home" directory so is probably
  buried god knows where, but at least the GUI ought to be able to get
  it to let users add things to it).

- This commit also adds a swift version of the PacketTunnelProvider
  glue, which ought to work in theory, but the *tooling* for cmake is so
  underdeveloped that I couldn't find any way to actually get the damn
  thing working.  So I'm committing it here anyway (and will revert it
  away in the next commit) in case we someday want to switch to it.

-
2021-09-02 14:17:09 -04:00
Jason Rhinelander
3f0b34e860
Consolidate apple-specific bits into llarp/apple 2021-09-02 14:17:09 -04:00
jeff
deb0a982be
it works 2021-09-02 14:17:09 -04:00
jeff
7db2459469
macos sort of works now 2021-09-02 14:17:09 -04:00
Jason Rhinelander
3ab117a03b
Switch extension from a framework to an appex 2021-09-02 14:17:08 -04:00
Jason Rhinelander
faf8a699a6
Set version into Info.plist, don't manually configure
cmake already treats the info plist as a file to be configured (not
merely copied) so we don't need to configure_file ourselves to a temp
file.
2021-09-02 14:17:08 -04:00
Jason Rhinelander
0bb00baacf
Various cmake build cleanups/refactors
- Added contrib/macos/README.txt with description of the cancer
  happening here.
- Add provisioningprofiles that Apple wants to make things work properly
- Made the entitlements files match the provisioningprofiles
- Remove configured entitlements files; we *can't* change any of the
  things here because they are closedly tied to the provisioningprofiles
  -- which means if someone wants to build their own Lokinet, they have
  to replace a bunch of crap and change application IDs throughout.
  This is the hostile-to-open-source Apple way.
- Remove unused old lokinet binary, as we're no longer using it on macos
- Use a POST_BUILD rather than install to copy things around into the
  right places
- Convert all the configure_file's to consistently use @ONLY
- Misc cleanups
2021-09-02 14:17:08 -04:00
jeff
5edd045c9b
add swift version bullshit file and additional bullshittery 2021-09-02 14:17:08 -04:00
jeff
0708a0d897
initial network extension code for macos
probably does not work
2021-09-02 14:17:08 -04:00
Jeff
3bcc8f99c0
Merge pull request #1726 from majestrate/dns-graceful-teardown-2021-09-01
dns refactor
2021-09-01 16:23:27 -04:00
Jeff
060c571060
Merge pull request #1727 from majestrate/android-hang-fix-2021-09-01
dont save addrmap on android as it hangs
2021-09-01 16:23:17 -04:00
Jeff
cd99e5c4f4
Merge pull request #1729 from jagerman/fix-omq-deprecation
Stop using deprecated OMQ connect_remote overload
2021-09-01 16:19:35 -04:00
Jason Rhinelander
a8a7ef5461 Stop using deprecated OMQ connect_remote overload 2021-09-01 15:40:25 -03:00
Jason Rhinelander
14c93e2b93 Unbound callbacks also need arguments reversed
PR #1725 reversed argument orders but UnboundResolver was still using
(from,to) ordering in its callbacks, which leaked through to make a
wrong order in our reply function (which simply forwards arguments).

This fixes that bug by making UnboundResolver callback argument order
consistent (i.e. using to, from) with the PacketHandler argument order.
2021-09-01 14:40:18 -03:00
Jeff Becker
0c1a3e19bd
redo dns to use event loop on non windows and threading bullshit on windows 2021-09-01 13:08:37 -04:00
Jeff Becker
a4a9062f12
dont save addrmap on android as it hangs 2021-09-01 12:07:10 -04:00
Jason Rhinelander
3ce329d2bf Reapply "fix dns on android" + fix argument order
The reason the dns fix on android didn't work is that the DnsInterceptor
had a reversed to/from argument order for its
`SendServerMessageBufferTo` overload, and so android/mac needed the
to/from to be reversed so that the second reverse cancelled out the
first one.

Upon review, the DnsInterceptor order (to, from) is more intuitive than
the base order (from, to), so this reapplies the dns fix and swaps
everything *except* DnsInterceptor to match the (to, from) argument
order.
2021-09-01 12:09:27 -03:00
Jason Rhinelander
a70035b7ec
Revert "fix dns on android"
This reverts commit dace0224ec.

This reportedly didn't fix things on Android, and most definitely breaks
macOS (with this we get a bunch of errors about expecting inbound when
we have outbound).
2021-08-31 18:58:03 -04:00
Jeff
418eb4efaa
Merge pull request #1721 from majestrate/platform-bits-2021-08-26
initial routing table platform bits refactor
2021-08-31 12:10:32 -04:00
Jason Rhinelander
3deb55193f SockAddr string optimization
- Reduce buffer size to INET6_ADDRSTRLEN, and use a single buf rather
  than two identical ones in each branch.
- Don't pre-reserve because doing so is usually going to over-allocate,
  but also because it prevents SSO, especially for the IPv4 case which
  should fit in SSO for all IPv4 addresses.
2021-08-30 16:55:17 -03:00
Jeff Becker
6251c13d46
add NOP implementation of VPN route manager for android 2021-08-27 19:49:01 -04:00
Jeff Becker
07a58ffa6c
use vpn::NetworkInterface for add/del route via interface instead of string 2021-08-27 11:55:57 -04:00
Jeff Becker
c9b9ed91c2
make add/del blackhole default to empty implementation 2021-08-27 11:42:24 -04:00
Jeff Becker
e25ae7192f
introduce add/del route via interface to route manager 2021-08-27 11:40:40 -04:00
Jeff Becker
64cd2990bc
remove old routing table maniuplation code 2021-08-27 11:07:54 -04:00