Commit Graph

16 Commits (quic-wip)

Author SHA1 Message Date
dr7ana f755d2601f TUN ip packet re-writing; deps bump
- Packets coming in and out of full clients need their IP src/dest addresses re-written
- Lokinet's TUN device sucks up all packets aimed at the if range, correctly addressing them to the proper outbound
- On reception, lokinet's TUN device addresses correctly for the mapped application receiving the packet
- Brought a lil somethin' somethin' from libquic for CI
- Bump oxenmq to cpp20 branch
- Revert cpr to 1.9 stable for subproject curl dep bug
4 months ago
dr7ana 6e5d8413f5 Netif and quic Tunnel reduction
- link::TunnelManager will be re-implemented in link::QUICTunnel to make and accept TCP connections
- Will be simplified using Libevent and hooked into the new LocalEndpoint/RemoteHandler model
- TCP{Handle,Socket} ownership model will be revised to more monadic model; this will allow the TCPSockets (sockets representing accepted connections) to function entirely independantly of the bound socket
6 months ago
dr7ana abb16b192f Putting new objects to use
- cleaned up config parsing using the better Address/IP types and quic::Address where appropriate
- created new templated address_map using concepts constraining local types to quic::Address and IPRange, and remote types to {Client,Relay}Address
- now the correct local addresses and ranges can be passed to the correct handlers and endpoints for remote and local exit/service operation
- basically fully configured ::RemoteHandler
- deleted deprecated object files previously removed from compilation
6 months ago
dr7ana bf2f367f83 bye bye bencode baby bye byeeee 6 months ago
dr7ana b7b93981fe compiling, not linking 8 months ago
dr7ana e6d4814d3e deprecation nation
- old types almost entirely deprecated (ip_packet, sockaddr, etc)
- need to touch base with the team to discuss packet routing and the like
8 months ago
dr7ana 800c62b2ee event loop swap
- brought up libev loop implementation from libquic
- this will streamline deprecating the old IP_packet, UDPHandle, and other types
8 months ago
dr7ana e495637383 deprecated old types from config 8 months ago
dr7ana ac6255c736 Squashed commits for merge errors afer fixing client-refactor:
- Deprecate pathset, smashed into PathBuilder (renamed to PathHandler)
- Re-abstraction of sessions and PathHandlers
  - Renamed PathBuilder -> PathHandler to more accurately reflect purpose
  - {Service,Exit}Handler will remain as PathHandlers, though currently no path-sharing amongst sessions being managed is to be implemented. Handlers will maintain their own paths for both lookups and initiating sessions, while sessions will manage their paths independantly.
  - Session object handling necessitates the differentiation between outbound and inbound sessions. Initiators of sessions are entirely responsible for dictating the chosen path on which the session communicates, and must therefore continually build and manage paths for the negotiated session.
  - Outbound sessions are now {Service,Exit}Sessions
  - Inbound sessions are implemented with InboundSession, which is agnostic to the type of service being operated locally (service vs exit, client vs relay, etc). When the Session initiator signals a switch to a different path, it will be assigned to the InboundSession object by {Service,Exit}Endpoint, which manages local services and exits
8 months ago
dr7ana 5f8e1ada15 formatting 8 months ago
dr7ana f574cd798f Clang format include sorting + CMake
- includes are now sorted in consistent, logical order; first step in an attempt to fix the tomfoolery (no relation to Tom) brought in by include-what-you-use
- shuffled around some cmake linking to simplify dependency graph
- superfluous files removed
8 months ago
dr7ana c0b19de963 Review commit 8 months ago
dr7ana 206bd0b85e wawaweewa 12 months ago
dr7ana 11e54f6552 More message refactoring
- routing messages and surrounding code
- shim code in place for iteration and optimization after deciding what to do with buffer, string handling, and subsequent function calls
1 year ago
Jason Rhinelander 36792d4337
Fix multi-field < ordering
Lots and lots of places in the code had broken < operators because they
are returning something like:

    foo < other.foo or bar < other.bar;

but this breaks both the strict weak ordering requirements that are
required for the "Compare" requirement for things like
std::map/set/priority_queue.

For example:

    a = {.foo=1, .bar=3}
    b = {.foo=3, .bar=1}

does not have an ordering over a and b (both `a < b` and `b < a` are
satisfied at the same time).

This needs to be instead something like:

    foo < other.foo or (foo == other.foo and bar < other.bar)

but that's a bit clunkier, and it is easier to use std::tie for tuple's
built-in < comparison which does the right thing:

    std::tie(foo, bar) < std::tie(other.foo, other.bar)

(Initially I noticed this in SockAddr/sockaddr_in6, but upon further
investigation this extends to the major of multi-field `operator<`'s.)

This fixes it by using std::tie (or something similar) everywhere we are
doing multi-field inequalities.
2 years ago
Jeff Becker fedc56e3f1
initial commit for #1595 3 years ago