- Formatting concept to enable oxen-logging printing for custom objects was updated with libquic vbump to require boolean member variable
- Members added in base objects to be inherited through
- 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
- Tunnel IP assignment requires robust IP assignment
- With the correct implementation of max_ip/next_ip retrieval from ip and ip_range objects, we can now implement IPRangeIterator to manage this
- libquic bumped for needed ip methods
- bumped nlohmann, cpr, CLI11, oxen-encoding, pybind11, sqlite_orm
- span-lite, ghc-filesystem, and uvw removed after shift to C++20
- LocalEndpoint/RemoteHandler combined into SessionEndpoint for ambidextrous session management
- Data message routing in/out of paths implemented using callbacks for receiving datagrams differently for embedded vs full clients
- Tunneled QUIC endpoints (no-UDP endpoints) implemented with TCP client/server endpoints on embedded/full clients
- Lots of surrounding work on the above points
- TCP backend is differentiated in Inbound vs Outbound sessions, as one listens while the other connects
- These pathways are mroe discretely implemented, and the logic may move into the derived classes instead
- Now to add hooks to connect TCP server/client to backend (app or system TUN)
- Session initiation/handling session initiation request logic finished; still to loop in TCP logic and handlers
- remove SessionAuthPolicy from OutboundSession
- auth token mapping passed to RemoteHandler; ONS auth mappings resolved with ONS range mappings
- auth_static_tokens passed to LocalEndpoint; received auth verify passed tokens against that
- EmbeddedEndpoint removed for solo implementation of TunEndpoint for all instances except non-embedded clients
- Deprecated TransitHopInfo, TransitHopID; absorbed into TransitHop
- Reworked PathContext internal storage of TransitHops, both mutators/setters/getters
- Straightened out success conditions of path building
- Session initiation and path respective path building code is almost done being laid out
- Full steam ahead buddy
- 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
- Was able to repurpose a lot of the code from the ill-fated ev-dns implementation
- TCP{Handle,Socket} implemented to parallelize UDP{Handle,Socket} in functionality
- TCP implementation takes in a callback that receives an IPPacket; can also be easily reconfigured to hanle a UDPPacket by simply changing the callback type and the constructor called in llarp/ev/tcp.cpp::tcp_read_cb()
- Fixed final bencode.h dependencies in AlignedBuffer that was pending refactor of other types
- Last traces of any non-oxenc bencode are done
- Next is TCP listeners!
- TunEndpoint and LocalEndpoint prefiguring
- Fully removed service::Address and all uses of AddressVariant_t in favor of the improved NetworkAddress type
- Fully removed exit/* and most of service/*
- LocalEndpoint logic for regenerating and publishing introset
- 'publish_intro' performed over path messages: to be revised upon evaluating determinism in dht key comparison with every relay holding the entire network's RC's at all time
- surrounding logic left unchanged to be revised as per previous bullet -- can also likely deprecate "order" field with more massaging
- futher deprecation of "is_relayed" bool field would require different endpoints for relays to call
- LocalEndpoint and RemoteHandler properly configured using values from ::NetworkConfig
- ONS range mappings passed to config now resolved by RemoteHandler at earliest possible phase in Router::run()
- correctly looks up introset locally, stores on successful request-response if not found locally
- fetched introset used for recursive path-build through pivots
- serialize/deserialize logic DRYs out implementation
- session init handling laid out
- if a hop can generate the symmetric key and decrypt its respective payload, then the concept of checking a hash is somewhat pointless
- hmac generation and validation removed
- Path building logic in ::PathHandler is broken up into 3 functions. This allows paths built outside of the usual PathHandler::Tick() logic (ex: paths for initiating sessions) to implement custom logic and path handling
- RemoteHandler now uses segmented build logic to create a path upon session initiation without storing the created path internally