mirror of https://github.com/oxen-io/lokinet
Merge remote-tracking branch 'origin/master' into ipv6-tun
This commit is contained in:
commit
cd05fa6150
|
@ -154,20 +154,30 @@ set(THREADS_PREFER_PTHREAD_FLAG TRUE)
|
|||
find_package(Threads REQUIRED)
|
||||
|
||||
# not supported on Solaris - system libraries are not available as archives
|
||||
# LTO is supported only for native builds
|
||||
if(STATIC_LINK_RUNTIME)
|
||||
if (NOT SOLARIS)
|
||||
add_compile_options(-static -flto)
|
||||
if(NOT CMAKE_CROSSCOMPILING)
|
||||
add_compile_options(-static -flto)
|
||||
else()
|
||||
add_compile_options(-static)
|
||||
endif()
|
||||
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
link_libraries( -static -static-libstdc++ -pthread -flto )
|
||||
else()
|
||||
# this is messing with release builds
|
||||
add_compile_options(-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0)
|
||||
set(CMAKE_AR "gcc-ar")
|
||||
set(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> qcs <TARGET> <LINK_FLAGS> <OBJECTS>")
|
||||
set(CMAKE_C_ARCHIVE_FINISH "true")
|
||||
set(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> qcs <TARGET> <LINK_FLAGS> <OBJECTS>")
|
||||
set(CMAKE_CXX_ARCHIVE_FINISH "true")
|
||||
link_libraries( -flto -static-libstdc++ -static-libgcc -static -Wl,--whole-archive -lpthread -Wl,--no-whole-archive )
|
||||
if(NOT CMAKE_CROSSCOMPILING)
|
||||
# this is messing with release builds
|
||||
add_compile_options(-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0)
|
||||
set(CMAKE_AR "gcc-ar")
|
||||
set(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> qcs <TARGET> <LINK_FLAGS> <OBJECTS>")
|
||||
set(CMAKE_C_ARCHIVE_FINISH "true")
|
||||
set(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> qcs <TARGET> <LINK_FLAGS> <OBJECTS>")
|
||||
set(CMAKE_CXX_ARCHIVE_FINISH "true")
|
||||
link_libraries( -flto -static-libstdc++ -static-libgcc -static -Wl,--whole-archive -lpthread -Wl,--no-whole-archive )
|
||||
else()
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libstdc++ -static-libgcc -static -Wl,--whole-archive -lpthread -Wl,--no-whole-archive" )
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}")
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
link_libraries( -static-libstdc++ -static-libgcc )
|
||||
|
@ -262,8 +272,9 @@ else()
|
|||
target_link_libraries(${ABYSS_EXE} PUBLIC ${ABYSS_LIB} ${STATIC_LIB} ws2_32)
|
||||
endif(NOT WIN32)
|
||||
|
||||
target_include_directories(${ABYSS_LIB} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/${ABYSS}/include")
|
||||
target_include_directories(${ABYSS_EXE} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/${ABYSS}/include")
|
||||
# Why does abyss not inherit the existing include folders?
|
||||
target_include_directories(${ABYSS_LIB} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/${ABYSS}/include" llarp vendor/nlohmann/include include crypto/include)
|
||||
target_include_directories(${ABYSS_EXE} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/${ABYSS}/include" llarp vendor/nlohmann/include include crypto/include)
|
||||
|
||||
# for freebsd
|
||||
if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
|
||||
|
|
8
Makefile
8
Makefile
|
@ -65,8 +65,6 @@ NETNS ?= OFF
|
|||
CROSS ?= OFF
|
||||
# build liblokinet-shared.so
|
||||
SHARED_LIB ?= OFF
|
||||
# use libuv
|
||||
LIBUV ?= ON
|
||||
# enable generating coverage
|
||||
COVERAGE ?= OFF
|
||||
COVERAGE_OUTDIR ?= "$(TMPDIR)/lokinet-coverage"
|
||||
|
@ -94,11 +92,11 @@ ANALYZE_CONFIG_CMD = $(shell gecho -n "cd '$(BUILD_ROOT)' && " ; gecho -n "$(SCA
|
|||
|
||||
COVERAGE_CONFIG_CMD = $(shell gecho -n "cd '$(BUILD_ROOT)' && " ; gecho -n "cmake -G'$(CMAKE_GEN)' -DCMAKE_CROSSCOMPILING=$(CROSS) -DSTATIC_LINK_RUNTIME=$(STATIC_LINK) -DUSE_NETNS=$(NETNS) -DUSE_AVX2=$(AVX2) -DNON_PC_TARGET=$(NON_PC_TARGET) -DWITH_SHARED=$(SHARED_LIB) -DWITH_COVERAGE=yes -DCMAKE_EXPORT_COMPILE_COMMANDS=ON '$(REPO)'")
|
||||
else
|
||||
CONFIG_CMD = $(shell /bin/echo -n "cd '$(BUILD_ROOT)' && " ; /bin/echo -n "cmake -G'$(CMAKE_GEN)' -DCMAKE_CROSSCOMPILING=$(CROSS) -DSTATIC_LINK_RUNTIME=$(STATIC_LINK) -DUSE_NETNS=$(NETNS) -DUSE_AVX2=$(AVX2) -DNON_PC_TARGET=$(NON_PC_TARGET) -DWITH_SHARED=$(SHARED_LIB) -DUSE_LIBUV=$(LIBUV) -DCMAKE_EXPORT_COMPILE_COMMANDS=ON '$(REPO)'")
|
||||
CONFIG_CMD = $(shell /bin/echo -n "cd '$(BUILD_ROOT)' && " ; /bin/echo -n "cmake -G'$(CMAKE_GEN)' -DCMAKE_CROSSCOMPILING=$(CROSS) -DSTATIC_LINK_RUNTIME=$(STATIC_LINK) -DUSE_NETNS=$(NETNS) -DUSE_AVX2=$(AVX2) -DNON_PC_TARGET=$(NON_PC_TARGET) -DWITH_SHARED=$(SHARED_LIB) -DCMAKE_EXPORT_COMPILE_COMMANDS=ON '$(REPO)'")
|
||||
|
||||
ANALYZE_CONFIG_CMD = $(shell /bin/echo -n "cd '$(BUILD_ROOT)' && " ; /bin/echo -n "$(SCAN_BUILD) cmake -G'$(CMAKE_GEN)' -DCMAKE_CROSSCOMPILING=$(CROSS) -DSTATIC_LINK_RUNTIME=$(STATIC_LINK) -DUSE_NETNS=$(NETNS) -DUSE_AVX2=$(AVX2) -DNON_PC_TARGET=$(NON_PC_TARGET) -DWITH_SHARED=$(SHARED_LIB) -DUSE_LIBUV=$(LIBUV) -DCMAKE_EXPORT_COMPILE_COMMANDS=ON '$(REPO)'")
|
||||
ANALYZE_CONFIG_CMD = $(shell /bin/echo -n "cd '$(BUILD_ROOT)' && " ; /bin/echo -n "$(SCAN_BUILD) cmake -G'$(CMAKE_GEN)' -DCMAKE_CROSSCOMPILING=$(CROSS) -DSTATIC_LINK_RUNTIME=$(STATIC_LINK) -DUSE_NETNS=$(NETNS) -DUSE_AVX2=$(AVX2) -DNON_PC_TARGET=$(NON_PC_TARGET) -DWITH_SHARED=$(SHARED_LIB) -DCMAKE_EXPORT_COMPILE_COMMANDS=ON '$(REPO)'")
|
||||
|
||||
COVERAGE_CONFIG_CMD = $(shell /bin/echo -n "cd '$(BUILD_ROOT)' && " ; /bin/echo -n "cmake -G'$(CMAKE_GEN)' -DCMAKE_CROSSCOMPILING=$(CROSS) -DSTATIC_LINK_RUNTIME=$(STATIC_LINK) -DUSE_NETNS=$(NETNS) -DUSE_AVX2=$(AVX2) -DNON_PC_TARGET=$(NON_PC_TARGET) -DWITH_SHARED=$(SHARED_LIB) -DUSE_LIBUV=$(LIBUV) -DWITH_COVERAGE=yes -DCMAKE_EXPORT_COMPILE_COMMANDS=ON '$(REPO)'")
|
||||
COVERAGE_CONFIG_CMD = $(shell /bin/echo -n "cd '$(BUILD_ROOT)' && " ; /bin/echo -n "cmake -G'$(CMAKE_GEN)' -DCMAKE_CROSSCOMPILING=$(CROSS) -DSTATIC_LINK_RUNTIME=$(STATIC_LINK) -DUSE_NETNS=$(NETNS) -DUSE_AVX2=$(AVX2) -DNON_PC_TARGET=$(NON_PC_TARGET) -DWITH_SHARED=$(SHARED_LIB) -DWITH_COVERAGE=yes -DCMAKE_EXPORT_COMPILE_COMMANDS=ON '$(REPO)'")
|
||||
endif
|
||||
|
||||
TARGETS = $(REPO)/lokinet
|
||||
|
|
|
@ -117,8 +117,10 @@ main(ABSL_ATTRIBUTE_UNUSED int argc, ABSL_ATTRIBUTE_UNUSED char* argv[])
|
|||
#endif
|
||||
llarp::SetLogLevel(llarp::eLogDebug);
|
||||
llarp_threadpool* threadpool = llarp_init_same_process_threadpool();
|
||||
llarp_ev_loop_ptr loop = llarp_make_uv_loop();
|
||||
auto logic = std::make_shared< llarp::Logic >(threadpool);
|
||||
// Now that libuv is the single non-Windows event loop impl, we can
|
||||
// go back to using the normal function
|
||||
llarp_ev_loop_ptr loop = llarp_make_ev_loop();
|
||||
auto logic = std::make_shared< llarp::Logic >(threadpool);
|
||||
sockaddr_in addr;
|
||||
addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
|
||||
addr.sin_port = htons(1222);
|
||||
|
|
|
@ -246,11 +246,7 @@ __ ___ ____ _ _ ___ _ _ ____
|
|||
{
|
||||
llarp::LogInfo(LLARP_VERSION, " ", LLARP_RELEASE_MOTTO);
|
||||
llarp::LogInfo("starting up");
|
||||
#if defined(WIN32)
|
||||
mainloop = llarp_make_ev_loop();
|
||||
#else
|
||||
mainloop = llarp_make_uv_loop();
|
||||
#endif
|
||||
// ensure worker thread pool
|
||||
if(!worker && !singleThreaded)
|
||||
worker.reset(llarp_init_threadpool(2, "llarp-worker"));
|
||||
|
|
|
@ -51,14 +51,11 @@ namespace llarp
|
|||
|
||||
using llarp_ev_loop_ptr = std::shared_ptr< llarp_ev_loop >;
|
||||
|
||||
/// make an event loop using our baked in event loop, ew.
|
||||
/// make an event loop using our baked in event loop on Windows
|
||||
/// make an event loop using libuv otherwise.
|
||||
llarp_ev_loop_ptr
|
||||
llarp_make_ev_loop();
|
||||
|
||||
/// make an event loop using libuv
|
||||
llarp_ev_loop_ptr
|
||||
llarp_make_uv_loop();
|
||||
|
||||
// run mainloop
|
||||
void
|
||||
llarp_ev_loop_run_single_process(llarp_ev_loop_ptr ev,
|
||||
|
|
|
@ -631,12 +631,3 @@ namespace libuv
|
|||
}
|
||||
|
||||
} // namespace libuv
|
||||
|
||||
llarp_ev_loop_ptr
|
||||
llarp_make_uv_loop()
|
||||
{
|
||||
auto loop = std::make_shared< libuv::Loop >();
|
||||
if(loop->init())
|
||||
return loop;
|
||||
return nullptr;
|
||||
}
|
||||
|
|
|
@ -198,15 +198,14 @@ namespace llarp
|
|||
HopHandler_ptr
|
||||
PathContext::GetByUpstream(const RouterID& remote, const PathID_t& id)
|
||||
{
|
||||
auto own = MapGet(
|
||||
m_OurPaths, id,
|
||||
[](const PathSet_ptr) -> bool {
|
||||
// TODO: is this right?
|
||||
return true;
|
||||
},
|
||||
[remote, id](PathSet_ptr p) -> HopHandler_ptr {
|
||||
return p->GetByUpstream(remote, id);
|
||||
});
|
||||
auto own = MapGet(m_OurPaths, id,
|
||||
[](const PathSet_ptr) -> bool {
|
||||
// TODO: is this right?
|
||||
return true;
|
||||
},
|
||||
[remote, id](PathSet_ptr p) -> HopHandler_ptr {
|
||||
return p->GetByUpstream(remote, id);
|
||||
});
|
||||
if(own)
|
||||
return own;
|
||||
|
||||
|
|
|
@ -1163,18 +1163,18 @@ namespace llarp
|
|||
}
|
||||
m_PendingTraffic[remote].emplace_back(data, t);
|
||||
// no converstation
|
||||
return EnsurePathToService(
|
||||
remote,
|
||||
[&](Address r, OutboundContext* c) {
|
||||
if(c)
|
||||
{
|
||||
c->UpdateIntroSet(true);
|
||||
for(auto& pending : m_PendingTraffic[r])
|
||||
c->AsyncEncryptAndSendTo(pending.Buffer(), pending.protocol);
|
||||
}
|
||||
m_PendingTraffic.erase(r);
|
||||
},
|
||||
5000, true);
|
||||
return EnsurePathToService(remote,
|
||||
[&](Address r, OutboundContext* c) {
|
||||
if(c)
|
||||
{
|
||||
c->UpdateIntroSet(true);
|
||||
for(auto& pending : m_PendingTraffic[r])
|
||||
c->AsyncEncryptAndSendTo(
|
||||
pending.Buffer(), pending.protocol);
|
||||
}
|
||||
m_PendingTraffic.erase(r);
|
||||
},
|
||||
5000, true);
|
||||
}
|
||||
|
||||
bool
|
||||
|
|
|
@ -16,8 +16,8 @@ struct llarp_threadpool
|
|||
const pid_t callingPID;
|
||||
|
||||
llarp_threadpool(int workers, const char *name)
|
||||
: impl(
|
||||
std::make_unique< llarp::thread::ThreadPool >(workers, workers * 128))
|
||||
: impl(std::make_unique< llarp::thread::ThreadPool >(workers,
|
||||
workers * 128))
|
||||
, jobs(nullptr)
|
||||
, callingPID(0)
|
||||
{
|
||||
|
|
|
@ -25,7 +25,7 @@ namespace llarp
|
|||
|
||||
void
|
||||
Win32LogStream::PreLog(std::stringstream& ss, LogLevel lvl, const char* fname,
|
||||
int lineno) const
|
||||
int lineno, const std::string& nodename) const
|
||||
{
|
||||
if(!isConsoleModern)
|
||||
{
|
||||
|
@ -60,11 +60,12 @@ namespace llarp
|
|||
ss << "[ERR] ";
|
||||
break;
|
||||
}
|
||||
ss << "(" << thread_id_string() << ") " << log_timestamp() << " " << fname
|
||||
ss << "[" << nodename << "]"
|
||||
<< "(" << thread_id_string() << ") " << log_timestamp() << " " << fname
|
||||
<< ":" << lineno << "\t";
|
||||
}
|
||||
else
|
||||
OStreamLogStream::PreLog(ss, lvl, fname, lineno);
|
||||
OStreamLogStream::PreLog(ss, lvl, fname, lineno, nodename);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -12,8 +12,8 @@ namespace llarp
|
|||
Win32LogStream(std::ostream& out);
|
||||
|
||||
void
|
||||
PreLog(std::stringstream& s, LogLevel lvl, const char* fname,
|
||||
int lineno) const override;
|
||||
PreLog(std::stringstream& s, LogLevel lvl, const char* fname, int lineno,
|
||||
const std::string& nodename) const override;
|
||||
|
||||
void
|
||||
PostLog(std::stringstream& s) const override;
|
||||
|
|
|
@ -121,7 +121,7 @@ struct LinkLayerTest : public test::LlarpTest< NoOpCrypto >
|
|||
oldRCLifetime = RouterContact::Lifetime;
|
||||
RouterContact::IgnoreBogons = true;
|
||||
RouterContact::Lifetime = 500;
|
||||
netLoop = llarp_make_uv_loop();
|
||||
netLoop = llarp_make_ev_loop();
|
||||
m_logic.reset(new Logic());
|
||||
}
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ struct AbyssTestBase : public ::testing::Test
|
|||
Start()
|
||||
{
|
||||
threadpool = llarp_init_same_process_threadpool();
|
||||
loop = llarp_make_uv_loop();
|
||||
loop = llarp_make_ev_loop();
|
||||
logic = std::make_shared< llarp::Logic >(threadpool);
|
||||
|
||||
sockaddr_in addr;
|
||||
|
|
Loading…
Reference in New Issue