Lokinet is an anonymous, decentralized and IP based overlay network for the internet.
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Go to file
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
.github Update issue templates 5 years ago
cmake Remake non-mac icon; regenerate during build for windows 2 years ago
contrib Remake non-mac icon; regenerate during build for windows 2 years ago
crypto Replace logging with oxen-logger 2 years ago
daemon Merge pull request #1991 from jagerman/lokinet-vpn-cleanups 2 years ago
docs Merge pull request #1969 from majestrate/wintun-windivert-2022-08-02 2 years ago
external oxen-mq update to tagged stable release 2 years ago
gui@7b0f1aacdf Remake non-mac icon; regenerate during build for windows 2 years ago
include fix up log statements 2 years ago
jni changeset for windows port 2 years ago
llarp Fix multi-field < ordering 2 years ago
pybind changeset for windows port 2 years ago
test Fix obsolete oxenmq/hex.h usage 2 years ago
win32-setup changeset for windows port 2 years ago
.clang-format Config file improvements (#1397) 4 years ago
.clang-tidy Tweak clang-tidy rules 3 years ago
.dir-locals.el add emacs dir-locals 6 years ago
.dockerignore Add fail-able docker build for gcc trunk 5 years ago
.drone.jsonnet Remake non-mac icon; regenerate during build for windows 2 years ago
.gitattributes Add mainnet/testnet bootstrap files into repo 3 years ago
.gitignore Add mainnet/testnet bootstrap files into repo 3 years ago
.gitmodules Build apple/macos GUI from lokinet project 2 years ago
.swift-version add swift version bullshit file and additional bullshittery 3 years ago
CMakeLists.txt bake in bootstrap fallbacks at build time 2 years ago
CMakeSettings.json Fixup MSVC build 5 years ago
CONTRIBUTING.md Update CONTRIBUTING.md 5 years ago
CONTRIBUTING_es.md Create CONTRIBUTING_es.md 5 years ago
LICENSE make it so github sees the repo is gpl3 2 years ago
readme.md restructure readme and docs 2 years ago
readme_es.md Add missing dep 'cppzmq' (#1764) 3 years ago
readme_fr.md add french readme 2 years ago
readme_ru.md Add missing dep 'cppzmq' (#1764) 3 years ago

readme.md

Lokinet

Lokinet is the reference implementation of LLARP (low latency anonymous routing protocol), a layer 3 onion routing protocol.

Installation instructions can be found here.

You can learn more about the high level, how to use it and the internals of the protocol here

Build Status

License

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Copyright © 2018-2022 The Oxen Project
Copyright © 2018-2022 Jeff Becker
Copyright © 2018-2020 Rick V. (Historical Windows NT port and portions)