-Copyright (C) 2014-2018 Guus Sliepen <guus@meshlink.io>
+Copyright (C) 2014-2021 Guus Sliepen <guus@meshlink.io>
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
## List of libraries that MeshLink depends on
-* Catta (LGPL version 2.1)
* Ed25519 (zlib license)
* Chacha20-Poly1305 (public domain)
If you do have a commercial license for the MeshLink library, then apart from
the obligations set out in the commercial license, you are also obligated to
follow the rules set out in the licenses of the libraries MeshLink depends on.
-In short, these are:
-
-* Unless you have compiled MeshLink without support for Catta, you must make
- the source code of Catta, with any modifications that you made to the Catta
- library itself, available on request to anyone who has received a copy of
- your closed source software, under the terms of the GNU Lesser General Public
- License version 2.1 or later.
-* Unless you have compiled MeshLink without support for Catta, you must give
- prominent notice with each copy of your software that your software is using
- Catta, and that the Catta library itself is covered under the terms of the
- GNU Lesser General Public License version 2.1.
-
-Apart from these obligations, you are strongly recommended to mention the other
-libraries that MeshLink is depending on, as well as mention the MeshLink
-library itself:
+In particular, ensure you give credits to the library authors:
* Attribute Orson Peters as the author of the Ed25519 library.
* Attribute Daniel J. Bernstein as the author of the Chacha20-Poly1305 library.
Apart from the obligations for the MeshLink library, set out in the GPL, you
are also obligated to follow the rules set out in the licenses of the libraries
-MeshLink depends on. In short, these are:
-
-* Unless you have compiled MeshLink without support for Catta, you must make
- the source code of Catta, with any modifications that you made to the Catta
- library itself, available on request to anyone who has received a copy of
- your closed source software, under the terms of the GNU Lesser General Public
- License version 2.1 or later.
-* Unless you have compiled MeshLink without support for Catta, you must give
- prominent notice with each copy of your software that your software is using
- Catta, and that the Catta library itself is covered under the terms of the
- GNU Lesser General Public License version 2.1.
-
-Apart from these obligations, you are strongly recommended to mention the other
-libraries that MeshLink is depending on, as well as mention the MeshLink
-library itself:
+MeshLink depends on.
+In particular, ensure you give credits to the library authors:
* Attribute Orson Peters as the author of the Ed25519 library.
* Attribute Daniel J. Bernstein as the author of the Chacha20-Poly1305 library.
- MeshLink, copyright © 2014-2018 Guus Sliepen,
licensed under the GPL version 2 or later¹
- - Catta, copyright © 2004-2018 the Avahi Developers and others,
- licensed under the LGPL version 2.1 or later²
- Chacha20-Poly1305, by Daniel J. Bernstein, public domain
- Ed25519, copyright © 2015 Orson Peters, licensed under the zlib license
¹) omit the "licensed under" text if you have a commercial license
-²) omit this is you compiled MeshLink without support for Catta
The full text of the licenses of all libraries used should be included in the
documentation, and should be included in any forms or displays that contain
Version 0.1
- * Initial version of the MeshLink library.
+ * Initial version of the MeshLink-tiny library.
-This is the README file for the MeshLink library. Installation instructions may
+This is the README file for the MeshLink-tiny library. Installation instructions may
be found in the INSTALL file.
-MeshLink is Copyright (C) 2014-2018 Guus Sliepen <guus@meshlink.io>
+MeshLink is Copyright (C) 2014-2021 Guus Sliepen <guus@meshlink.io>
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
To obtain a license to use this library in commercial software, please contact
sales@meshlink.io.
-
-This is not a finished version
-------------------------------
-
-Please do not use this library yet.
-
-
-Requirements
-------------
-
-In order to compile MeshLink, you will need a GNU C compiler environment.
-
-
Features
--------
+MeshLink-tiny is a version of the MeshLink library optimized for devices with
+very little resources. In particular, it tries to reduce code size and memory
+usage, while keeping as much the API and network protocol compatible with the
+full MeshLink library as much as possible.
+
MeshLink is a library that allows applications to connect to other instances of
itself, and exchange messages in a secure way. MeshLink provides end-to-end
encryption and authentication of messages with perfect forward secrecy. The
- Clone and cross-compile MeshLink:
- git clone git://meshlink.io/meshlink
- cd meshlink
+ git clone git://meshlink.io/meshlink-tiny
+ cd meshlink-tiny
autoreconf -fsi
CC=/tmp/my-android-toolchain/bin/arm-linux-androideabi-gcc CXX=/tmp/my-android-toolchain/bin/arm-linux-androideabi-g++ ./configure --host=arm-linux-androideabi
make -j$(nproc)
Before you can start compiling MeshLink from a fresh git clone, you have
to install the very latest versions of the following packages:
-- GCC
+- GCC or Clang
- automake
- autoconf
+++ /dev/null
-
-The libmeshlink.so library is compiled and you will find it in ./src/.libs/
-
-You can make your tests using this command
-
-export LD_LIBRARY_PATH='/home/saverio/SORGENTI/meshlink/src/.libs/'
+++ /dev/null
-TODO list for MeshLink
-----------------------
-
-* meshlink_join():
- - add checks that we only join another mesh if we did not connect to any other node before.
- - only allow meshlink_join() when the library thread is not running.
- - remove old host config file if the invitation gave the node a different name.
- - how to handle nodes that are part of one mesh and want to join another?
-
-* meshlink_leave()?
- - leaving a mesh is basically starting all over again, with new private keys?
-
-* Allow meshlink_open() to be called with a NULL name, in anticipation of meshlink_join().
- - Do not allow meshlink_start() if no Name is set.
-
-* Add autoconf/automake stuff to call Doxygen.
-
-* Write a manual
- - Add introduction and walkthrough how to use MeshLink in an application to
- the doxygen manual.
- - Explain what MeshLink does and how it should be used in the application
- - Import examples into the manual?
- - List possible ways of synchronisation between application and library threads
- - simple polling
- - pthread_cond?
- - pipe() to signal an event loop of the application's choice
- - whatever equivalent(s) there are on Windows
-
-Not finished but being worked on:
----------------------------------
-
-* Provide thread-safety to functions that return pointers to meshlink_node_t.
- - The mesh->nodes tree can be updated by the library thread at any time,
- so it must be protected by a mutex or rwlock.
- - Individial node_t's must never be freed or moved except in meshlink_close().
- - Check all public API functions.
-
-* Write a test suite for the library.
-
-* Add a "channel" library to MeshLink.
- - Support multiple TCP- and UDP-like streams between two nodes.