Commit Graph

5840 Commits

Author SHA1 Message Date
Jason Rhinelander
97088719e0 Avoid reserved __identifiers
Identifier names with `__` in them are reserved for the implementation.
One leading underscore followed by a lower-case letter is fine though
(leading underscore followed by *upper*-case is, however, also
reserved).
2020-05-20 19:18:28 -03:00
Jason Rhinelander
60d704b25d Remove dead code 2020-05-20 19:18:28 -03:00
Jason Rhinelander
f9bbc30c3d IsIPv4Bogon: constexpr array instead of a function-local static vector
The fixed-size array + not needing to do an atomic operation in the
function should allow better compiler optimization.

(And with C++17 the type and size are inferred).
2020-05-20 19:18:27 -03:00
Jason Rhinelander
bdc9c7bfa8 Move IPRange out of net.hpp; free up TruncateV6 etc.
- Move IPRange into its own net/ip_range.hpp

- Move the static net::IPPacket::TruncateV6, etc. functions to free
net::TruncateV6, etc. functions (now from net/ip.hpp instead of
net/ip_packet.hpp).

- Make net::TruncateV6 and net::ExpandV4 constexpr.

- Add IPRange::FromIPv4 factory function (to replace the iprange_ipv4
free function)
2020-05-20 19:18:27 -03:00
Jason Rhinelander
72bf215da4 Move IPPacket header (part 1)
Rename net/ip.{cpp,hpp} to net/ip_packet.{cpp,hpp}.

(Doing this in two commits because I want to repurpose ip.hpp/ip.cpp,
and want git to figure out the history properly).
2020-05-20 19:18:27 -03:00
Jason Rhinelander
be9ddf2ae1 Bring back ghc::filesystem for broke AF macos
macOS doesn't provide `<filesystem>` support when targetting anything
earlier than 10.15.
2020-05-20 19:18:27 -03:00
Jason Rhinelander
4d34ee82c9 Move Catalina build to drone (on lokinet-mini) 2020-05-20 19:18:27 -03:00
Jason Rhinelander
7cb542ea23
Merge pull request #1274 from notlesh/fix-keymanager-test-2020-05-18
Fix various unit tests
2020-05-20 19:16:30 -03:00
Stephen Shelton
ffdeca5378
Initialize all primitive values in Config 2020-05-20 15:54:23 -06:00
Stephen Shelton
807bfc5302
Initialize Config with LoadConfig in all key manager tests 2020-05-20 15:54:23 -06:00
Stephen Shelton
fa6845b206
Use global RC file paths instead of redefining them 2020-05-20 15:54:23 -06:00
Stephen Shelton
ac225eb65e
Testing: explicitly initialize variable 2020-05-20 15:54:22 -06:00
Stephen Shelton
7167b4ad02
Properly initialize config in unit test 2020-05-20 15:54:21 -06:00
Jeff
a43bdef27c
Merge pull request #1280 from jagerman/gcc10
Add gcc-10 build
2020-05-19 19:07:45 -04:00
Jason Rhinelander
b1281cd9d3 Add gcc-10 build
This is temporary (until the `g++` metapackage switches from gcc 9 to
gcc 10).
2020-05-19 17:34:32 -03:00
Jason Rhinelander
110fbe14c9
Merge pull request #1279 from jagerman/curl-fix
Fix cmake curl definition
2020-05-19 01:45:35 -03:00
Jason Rhinelander
604501b07f Fix cmake curl definition 2020-05-18 23:49:30 -03:00
Jeff
abc127a78a
Merge pull request #1276 from despair86/sockaddr-fix
fix sockaddr on win32
2020-05-18 16:16:04 -04:00
Rick V
918a09c0cf fix sockaddr win32 and collapse headers on the unix side 2020-05-18 15:13:45 -05:00
Jason Rhinelander
cc5e8787c5
Merge pull request #1275 from jagerman/curl-win32-fix
Only link curl if we set up a curl target
2020-05-18 17:11:31 -03:00
Jason Rhinelander
28362fd6a6 Clean up curl define
It doesn't have to be win32-specific, we could (for example) use this on
mac as well to build without curl/SN support.
2020-05-18 15:35:13 -03:00
Jason Rhinelander
856cf82c0e Only link curl if we set up a curl target
Should fix win32 (which doesn't link to curl).
2020-05-18 15:11:13 -03:00
Jeff
759c0e6f31
Merge pull request #1273 from jagerman/drone
Drone CI + cmake + fixes
2020-05-18 07:47:44 -04:00
Jason Rhinelander
a82b83119e Remove travis-ci builds now handled via drone 2020-05-17 23:31:41 -03:00
Jason Rhinelander
7f8698ce44 Add several drone ci builds 2020-05-17 23:31:41 -03:00
Jason Rhinelander
5e91c946c5 AVX code: move stub into separate file; always check -mavx2/-mfma
This simplifies the build a bit by moving the avx stubs into a single .c
file: we can avoid compiling all of the avx2 code and just add a single
stub file instead when the compiler doesn't have -mavx2/-mfma.

This also simplifies cmake to just always test the flags; there are some
cases (like using NATIVE_BUILD) where USE_AVX2 doesn't necessarily
apply, and it's cheap to just check them.
2020-05-17 23:31:41 -03:00
Jason Rhinelander
b4fce0e3ee curl: use ccache; disabled lots of other crap
brotli and libpsl both got autodetected on my system, so explicitly
disable them (and a bunch of other crap from --configure).

Build with ccache.
2020-05-17 23:31:41 -03:00
Jason Rhinelander
fa794e64cd Build libsodium with ccache and fPIC
fPIC is needed in case we are building a shared liblokinet (within which
we want the static libsodium).
2020-05-17 23:31:41 -03:00
Jason Rhinelander
c5faa86926 cmake refactor
Refactors many things in cmake to improve and simplify:

- don't use variable indirection for target names; target names are
*already* a variable of sorts.  (e.g. ${UTIL_LIB} is now just
lokinet-util).  cmake/basic_definitions.cmake is now gone.

- fix LTO enabling to use the standard cmake (3.9+) LTO mechanism rather
than shoving a bunch of flag hacks through link_libraries and
add_compile_options.  This also now enables LTO when building a shared
library (because previously the -flto hacks were only turned on in the
static code for some reason).

- build liblokinet as *either* shared library or static library, but not
both.  Building both makes things more complicated because they had
different names (lokinet-shared or lokinet-static) and seems pointless:
you generally want one or the other.  Now there is just the liblokinet
target, which will be shared or static depending on the value of
BUILD_SHARED_LIBS.

- Simplify lokinet-cryptography AVX2 code: just build *one* library, and
add in the additional AVX2 files when possible, rather than building two
and needing to merge them.

- Compress STATIC_LINK and STATIC_LINK_RUNTIME into just STATIC_LINK.
It makes no sense to use one of these (_RUNTIME) on Windows and the
other on non-Windows when they appear to try to do the same thing.

- remove a bunch of annotations from `endif(FOO)` -> `endif()`.

- move all the tuntap compilation code (including OS-specific source
file selection) into vendor/CMakeLists.txt and build tuntap as an
intermediate OBJECT library rather than keeping a global variable in 5
different files.

- move release motto define to root cmake; it made no sense being
duplicated in both unix.cmake and win32.cmake

- fix add_log_tag to not stomp on any existing source compile flags with
its definition.  Also use proper compile definition property instead of
cramming it into compile flags.

- make optimization/linker flags less hacky.  There's no reason for us
to force particular optimization flags because the cmake build type
already does that (e.g. -DCMAKE_BUILD_TYPE=Release does -O3).  Not doing
that also silences a bunch of cmake warnings because it thinks "-O0 -g3"
etc.  are link libraries (which is reasonable: that's what the code was
telling cmake they are).

- sets the default build type to RelWithDebInfo which gives us `-O2 -g`
if you don't specify a build type.

- Move PIC up (so that the things loaded in unix.cmake, notably libuv,
have it set).

- Add a custom `curl` interface library that carries the correct link
target and include paths for curl (system or bundled).
2020-05-17 23:31:23 -03:00
Jason Rhinelander
ab4ee954b9 Remove DEBIAN option
This hasn't been used in a long time; the debian packaging lives in
separate branches instead.
2020-05-17 21:29:05 -03:00
Jason Rhinelander
a45bec7c4f Removed RPI definition
This was a long-obsolete fix for things that don't matter anymore.
2020-05-17 21:28:25 -03:00
Jason Rhinelander
26ecf23ad8 Silence various warnings 2020-05-17 21:28:17 -03:00
Jason Rhinelander
e03dfc751c Remove crypto_noop
It isn't used anywhere, and has bitrotted (it is marked final, but is
missing some required abstract method instances).
2020-05-17 17:08:11 -03:00
Jason Rhinelander
5087ba2364 Regex fix 2020-05-17 17:08:11 -03:00
Jason Rhinelander
bc4573c447 Disable empty string SockAddr throw test
The code intentionally no longer throws and handles this as a special
case (resulting in an empty SockAddr).
2020-05-17 17:08:11 -03:00
Jason Rhinelander
0de3a5f11d
Merge pull request #1231 from majestrate/libuv-cmake-submodule-2020-04-20
add libcurl and libuv to cmake out of makefile
2020-05-17 14:58:07 -03:00
Jeff Becker
06348ced47 fix typo in makefile 2020-05-17 14:54:29 -03:00
Jeff Becker
bd19dd95e0 revert makefile and travis 2020-05-17 14:54:27 -03:00
Jeff Becker
701175a873 download sodium 2020-05-17 14:53:35 -03:00
Jeff Becker
8497c8b1d4 more travis tweaks 2020-05-17 14:53:35 -03:00
Jeff Becker
9bd537333b fix travis 2020-05-17 14:53:35 -03:00
Jeff Becker
64157d5d44 track libcurl and libuv with cmake, add libuv submodule 2020-05-17 14:53:28 -03:00
Jeff
d0a3d6beae
Merge pull request #1270 from majestrate/gpl3-reliecense-2020-05-15
relicense to GPL3
2020-05-17 11:28:22 -04:00
Jeff
cc9830e763
update license preamble
change license preamble to exclude control panel text
2020-05-17 11:27:41 -04:00
Jason Rhinelander
d04576a2c6
Merge pull request #1269 from majestrate/make-unit-tests-pass-05-15-20
Make unit tests and CI pass
2020-05-16 20:51:50 -03:00
Jeff Becker
fc5b28b66f
const correctness 2020-05-15 14:07:22 -04:00
Jeff Becker
d91d9152de
change xcode versions in travis to try and make travis stop sucking 2020-05-15 13:48:58 -04:00
Jeff Becker
57a737290c
relicense to GPL3 2020-05-15 11:26:04 -04:00
Jeff Becker
04c542b03f
clean up makefile targets to remove some old unused ones 2020-05-15 11:21:52 -04:00
Jeff Becker
3ac2a3defa
add dist source tarball generation and bundle it with gitlab static release 2020-05-15 10:45:11 -04:00