]> git.meshlink.io Git - meshlink/log
meshlink
5 years agoWrite config files atomically.
Guus Sliepen [Thu, 5 Sep 2019 17:33:53 +0000 (19:33 +0200)]
Write config files atomically.

5 years agoWhen opening a mesh handle, inherit the global log callback.
Guus Sliepen [Thu, 5 Sep 2019 17:32:42 +0000 (19:32 +0200)]
When opening a mesh handle, inherit the global log callback.

This prevents losing log messages halfway during meshlink_open().

5 years agoFix a potential crash when restarting the mesh.
Guus Sliepen [Thu, 5 Sep 2019 15:55:41 +0000 (17:55 +0200)]
Fix a potential crash when restarting the mesh.

The tv value must not be changed for a timeout that is still linked into the
tree of timeouts, otherwise the tree can get corrupted.

5 years agoMake ping intervals and timeouts configurable for each device class.
Guus Sliepen [Thu, 5 Sep 2019 15:53:12 +0000 (17:53 +0200)]
Make ping intervals and timeouts configurable for each device class.

5 years agoBetter use of enum dev_class_t.
Guus Sliepen [Thu, 5 Sep 2019 13:14:45 +0000 (15:14 +0200)]
Better use of enum dev_class_t.

5 years agoAdd support for AIO using filedescriptors.
Guus Sliepen [Thu, 29 Aug 2019 21:26:29 +0000 (23:26 +0200)]
Add support for AIO using filedescriptors.

This adds support to enqueue transmits between channels and filedescriptors.
Currently, it requires that read() and write() calls on the filedescriptors
are non-blocking and always succeed, which limits it to reading from and
writing to files.

5 years agoUse relative URLs for the submodules.
Guus Sliepen [Wed, 21 Aug 2019 19:29:37 +0000 (21:29 +0200)]
Use relative URLs for the submodules.

5 years agoIgnore REQ_KEY only if we very recently sent one ourselves.
Guus Sliepen [Sun, 18 Aug 2019 14:58:29 +0000 (16:58 +0200)]
Ignore REQ_KEY only if we very recently sent one ourselves.

In case the SPTPS state between two nodes becomes desynchronized, we must
allow a new SPTPS connection to be set up eventually.

5 years agoRemove redundant call to graph().
Guus Sliepen [Sun, 18 Aug 2019 14:54:58 +0000 (16:54 +0200)]
Remove redundant call to graph().

When we receive an ADD_EDGE for an existing edge but with new information,
don't call graph() between removing the old edge and adding the new one.
This prevents a node from temporarily being considered unreachable, which
in turn would cause the SPTPS state to that node being reset.

5 years agoSend REQ_KEY after a successful meta-connection only from the initiator.
Guus Sliepen [Sun, 18 Aug 2019 14:51:31 +0000 (16:51 +0200)]
Send REQ_KEY after a successful meta-connection only from the initiator.

5 years agoTest concurrent AIO and non-AIO transfers.
Guus Sliepen [Thu, 15 Aug 2019 20:41:15 +0000 (22:41 +0200)]
Test concurrent AIO and non-AIO transfers.

Create 5 channels; 4 transfer a large amount of data via AIO, the 5th does
a regular meshlink_channel_send(). Verify that there is concurrency between
all channels.

5 years agoAllow the channel send and receive buffer size to be changed.
Guus Sliepen [Tue, 13 Aug 2019 19:03:42 +0000 (21:03 +0200)]
Allow the channel send and receive buffer size to be changed.

This also adds a test to see if this works in combination with
MESHLINK_CHANNEL_NO_PARTIAL.

5 years agoAdd meshlink_channel_aio_receive().
Guus Sliepen [Mon, 12 Aug 2019 14:46:02 +0000 (16:46 +0200)]
Add meshlink_channel_aio_receive().

This function allows handing over a large buffer to MeshLink which will be
used to receive data without needing intervention from the application.
A callback is called when MeshLink has filled the buffer with the data.

5 years agoAdd a test case for meshlink_channel_aio_send().
Guus Sliepen [Mon, 12 Aug 2019 12:01:52 +0000 (14:01 +0200)]
Add a test case for meshlink_channel_aio_send().

5 years agoAdd meshlink_channel_aio_send().
Guus Sliepen [Mon, 12 Aug 2019 11:43:01 +0000 (13:43 +0200)]
Add meshlink_channel_aio_send().

This function allows handing over a large amount of data to MeshLink
which will be sent without needing intervention from the application.
A callback is called when MeshLink is done with the data, so the
application can call any cleanup function it needs to call.

5 years agoAdd the MESHLINK_CHANNEL_NO_PARTIAL flag.
Guus Sliepen [Thu, 8 Aug 2019 13:20:42 +0000 (15:20 +0200)]
Add the MESHLINK_CHANNEL_NO_PARTIAL flag.

This ensures that calls to meshlink_channel_send() either succeed with all
data sent, or no data sent at all.

5 years agoUse condition variables to wait for threads to finish initializing.
Guus Sliepen [Sun, 4 Aug 2019 20:22:10 +0000 (22:22 +0200)]
Use condition variables to wait for threads to finish initializing.

To prevent a race condition when calling meshlink_stop() right after
meshlink_start(), we need to wait for the MeshLink and Catta threads to
finish initializing before we can return from meshlink_start().

5 years agoRemove global variables.
Guus Sliepen [Sun, 4 Aug 2019 10:58:27 +0000 (12:58 +0200)]
Remove global variables.

There still were some global variables and buffers that were either unused
or should be local to a MeshLink instance.

5 years agoAvoid unnecessary calls to time().
Guus Sliepen [Sun, 4 Aug 2019 10:22:52 +0000 (12:22 +0200)]
Avoid unnecessary calls to time().

We already have the current time from the event loop.

5 years agoCorrectly set device class after joining if the server didn't specify one.
Guus Sliepen [Sat, 3 Aug 2019 21:32:04 +0000 (23:32 +0200)]
Correctly set device class after joining if the server didn't specify one.

5 years agoCorrectly update device class when receiving an ADD_EDGE message.
Guus Sliepen [Sat, 3 Aug 2019 20:56:40 +0000 (22:56 +0200)]
Correctly update device class when receiving an ADD_EDGE message.

In some cases we didn't update the device class information when receiving
an ADD_EDGE message. This could cause autoconnect to fail to work as
expected.

5 years agoRun Catta in the same network namespace as MeshLink.
Guus Sliepen [Sat, 3 Aug 2019 20:54:34 +0000 (22:54 +0200)]
Run Catta in the same network namespace as MeshLink.

5 years agoIgnore online/offline state from Catta.
Guus Sliepen [Fri, 26 Jul 2019 22:49:40 +0000 (00:49 +0200)]
Ignore online/offline state from Catta.

Catta only works on Ethernet interfaces. However, if there is a
non-Ethernet interface, MeshLink might still be able to connect to
peers. So just rely on getifaddrs() for checking whether to terminate
connections or not.

5 years agoClose connections if the local address is no longer valid.
Guus Sliepen [Fri, 26 Jul 2019 22:44:06 +0000 (00:44 +0200)]
Close connections if the local address is no longer valid.

When we detect that there are changes on the network interfaces, check for
each active connection whether the local side of the connection has an
address that exists on at least one network interface. If not, then
communication via that connection is not possible. Instead of waiting for
a timeout, immediately terminate those connections.

5 years agoRemove unused member variables.
Guus Sliepen [Fri, 19 Jul 2019 16:54:40 +0000 (18:54 +0200)]
Remove unused member variables.

In MeshLink, we are not using node/edge options, and we don't support
compression or setting a custom local discovery broadcast address.

Keep the internal support for meta-connections via proxies for now, even
though it currently isn't exposed via the API.

5 years agoReorganize structs for better packing and access patterns.
Guus Sliepen [Fri, 19 Jul 2019 16:23:37 +0000 (18:23 +0200)]
Reorganize structs for better packing and access patterns.

Used the pahole tool to find gaps in structs. Move the lesser accessed
members to the end of the struct.

5 years agoSpeed up reconnections on network interface changes.
Guus Sliepen [Fri, 19 Jul 2019 12:50:25 +0000 (14:50 +0200)]
Speed up reconnections on network interface changes.

Catta informs us whenever an interface comes online or goes offline. If we
detect that there are no online interfaces, immediately terminate all meta-
connections. Otherwise, reset the ping timers and reconnection timers for
outgoing connections.

5 years agoFix a small memory leak.
Guus Sliepen [Fri, 19 Jul 2019 12:44:29 +0000 (14:44 +0200)]
Fix a small memory leak.

When registering ourselves to Catta, we called meshlink_get_fingerprint()
without freeing the returned string afterwards.

5 years agoFix potential segmentation fault on node reachability change.
Guus Sliepen [Fri, 19 Jul 2019 12:40:36 +0000 (14:40 +0200)]
Fix potential segmentation fault on node reachability change.

5 years agoInform UTCP when a node is offline, so it will start connection timeouts.
Guus Sliepen [Sun, 7 Jul 2019 16:12:18 +0000 (18:12 +0200)]
Inform UTCP when a node is offline, so it will start connection timeouts.

When there are open channels to a node that is offline for longer than the
connection timeout, the channels will be marked closed, and callbacks will
be fired.

5 years agoUpdate UTCP to correctly handle timeouts sending data.
Guus Sliepen [Sun, 7 Jul 2019 14:52:02 +0000 (16:52 +0200)]
Update UTCP to correctly handle timeouts sending data.

Also add a test case that checks whether we get a callback when sent data
is not acked in a reasonable amount of time.

5 years agoPrevent meshlink_join() when the joining node is already part of a mesh.
Guus Sliepen [Thu, 4 Jul 2019 18:40:09 +0000 (20:40 +0200)]
Prevent meshlink_join() when the joining node is already part of a mesh.

5 years agoFix compiler warnings in the test suites.
Guus Sliepen [Thu, 13 Jun 2019 21:30:12 +0000 (23:30 +0200)]
Fix compiler warnings in the test suites.

5 years agoSpeed up initial autoconnect after joining a mesh.
Guus Sliepen [Thu, 30 May 2019 21:34:35 +0000 (23:34 +0200)]
Speed up initial autoconnect after joining a mesh.

When we just joined a mesh, we quickly want to establish redundant
connections. We do this by resetting the outgoing timer if we receive a
public key for a node that we are trying to connect to, and by speeding up
the autoconnect algorithm if we don't have 3 connections (in progress) yet.

5 years agoAutoconnect to reachable nodes without known public keys
Guus Sliepen [Thu, 23 May 2019 21:20:01 +0000 (23:20 +0200)]
Autoconnect to reachable nodes without known public keys

We must allow the autoconnect algorithm to try connections to nodes that
are online but for which we don't have a public key, otherwise we risk
that no connections are formed at all, except to the inviting node.

5 years agoEnsure we can pass arbitrary binary blobs for keys.
Guus Sliepen [Thu, 2 May 2019 22:24:29 +0000 (00:24 +0200)]
Ensure we can pass arbitrary binary blobs for keys.

5 years agoAdd encrypted key rotation feature api
sairoop-elear [Thu, 25 Apr 2019 03:38:31 +0000 (09:08 +0530)]
Add encrypted key rotation feature api

5 years agoModify meshlink configuration base file structre
sairoop-elear [Sun, 21 Apr 2019 03:45:42 +0000 (09:15 +0530)]
Modify meshlink configuration base file structre

5 years agoAdd unit test cases for encrypted storage key rotation
sairoop-elear [Fri, 12 Apr 2019 11:36:15 +0000 (17:06 +0530)]
Add unit test cases for encrypted storage key rotation

5 years agoVarious fixes for the encrypted storage support.
Guus Sliepen [Wed, 13 Mar 2019 22:13:06 +0000 (23:13 +0100)]
Various fixes for the encrypted storage support.

- create_initial_config_files() and node_write_config() are now the only
  functions that generate the content of new config files from scratch.
- All public API functions that change config files now immediately
  write them out.
- Config files of nodes that join using an invitation file are immediately
  written out.
- Ensure nodes marked dirty have their config files written out in
  periodic_handler(), and on meshlink_stop().
- Fix some memory leaks.
- Write out updated config files, and recreate mesh->self in meshlink_set_port().

5 years agoAdd support for opening a MeshLink instance without permanent storage.
Guus Sliepen [Mon, 11 Mar 2019 21:02:30 +0000 (22:02 +0100)]
Add support for opening a MeshLink instance without permanent storage.

5 years agoAdd missing declaration of chacha_ivsetup_96().
Guus Sliepen [Wed, 19 Dec 2018 20:24:25 +0000 (21:24 +0100)]
Add missing declaration of chacha_ivsetup_96().

5 years agoAdd support for encrypted storage.
Guus Sliepen [Fri, 14 Dec 2018 21:21:17 +0000 (22:21 +0100)]
Add support for encrypted storage.

This is a large overhaul of how configuration files are handled. All files
are now in PackMessage format, and are read from disk in to memory in one
go, and also saved to disk from memory in one go, using functions in conf.c.

5 years agoAdd the PackMessage library.
Guus Sliepen [Mon, 17 Dec 2018 02:12:55 +0000 (03:12 +0100)]
Add the PackMessage library.

5 years agoMake retry outgoing logic instantaneously connect when a change is discovered on...
lakshminarayanagurram [Fri, 24 May 2019 01:20:07 +0000 (06:50 +0530)]
Make retry outgoing logic instantaneously connect when a change is discovered on any node in catta

5 years agoAdd test cases for random port bindings
lakshminarayanagurram [Tue, 4 Jun 2019 02:03:33 +0000 (07:33 +0530)]
Add test cases for random port bindings

5 years agoMake meshlink_set_port() return false if we didn't bind to the requested port.
Guus Sliepen [Mon, 20 May 2019 09:18:23 +0000 (11:18 +0200)]
Make meshlink_set_port() return false if we didn't bind to the requested port.

5 years agoRe-enable building the chatpp example.
Guus Sliepen [Fri, 31 May 2019 14:27:33 +0000 (16:27 +0200)]
Re-enable building the chatpp example.

5 years agoAdd missing symbols to meshlink.sym.
Guus Sliepen [Fri, 31 May 2019 14:27:11 +0000 (16:27 +0200)]
Add missing symbols to meshlink.sym.

Also ensure automake treats it as a dependency, so it will rebuild the
library correctly whenever it is updated.

5 years agoUpdate android build
sairoop-elear [Mon, 13 May 2019 00:52:15 +0000 (06:22 +0530)]
Update android build

Fix compiling warnings

5 years agoUpdate README.android.
Guus Sliepen [Fri, 31 May 2019 11:19:26 +0000 (13:19 +0200)]
Update README.android.

Emphasize getting a recent version of the NDK, and also set the CXX
variable to ensure the C++ examples are compiled properly for Android.

Also ensure that README.android is a valid Markdown/CommonMark file.

5 years agoAdd meta-connection attempt callback feature
sairoop-elear [Thu, 25 Apr 2019 05:19:43 +0000 (10:49 +0530)]
Add meta-connection attempt callback feature

5 years agoAdd meshlink_get_submesh API
Lakshminarayana Gurram [Tue, 23 Apr 2019 04:20:09 +0000 (09:50 +0530)]
Add meshlink_get_submesh API

* Add meshlink_get_submesh API

* Modify submesh test vector to test meshlink_get_submesh API

5 years agoAdd condition check in auto connect for blacklisted nodes
Lakshminarayana Gurram [Tue, 16 Apr 2019 06:39:35 +0000 (12:09 +0530)]
Add condition check in auto connect for blacklisted nodes

* Add condition check in auto connect for blacklisted nodes

* Add test vector to test autoconnect

5 years agoAdd functions to get the amount of bytes in chanenl send and receive buffers.
Guus Sliepen [Sun, 17 Mar 2019 21:01:43 +0000 (22:01 +0100)]
Add functions to get the amount of bytes in chanenl send and receive buffers.

meshlink_channel_get_sendq() and meshlink_channel_get_recvq() call the
underlying UTCP connection's utcp_get_sendq() and utcp_get_recvq().
These return the amount of bytes waiting in the send and receive buffers.
In particular, a non-zero value for sendq means that sent data has not been
ACKed by the peer yet.

5 years agoRemove extra locks causing deadlocks for wait_sync_flag function
SS Roop [Mon, 18 Mar 2019 07:01:01 +0000 (12:31 +0530)]
Remove extra locks causing deadlocks for wait_sync_flag function

5 years agoFix spelling errors.
Guus Sliepen [Sun, 17 Mar 2019 20:46:45 +0000 (21:46 +0100)]
Fix spelling errors.

Found by codespell.

5 years agoMake Doxygen more strict, and fix errors in the documentation.
Guus Sliepen [Sun, 17 Mar 2019 20:41:42 +0000 (21:41 +0100)]
Make Doxygen more strict, and fix errors in the documentation.

5 years agoRemove make check warnings
SS Roop [Tue, 26 Feb 2019 21:58:30 +0000 (03:28 +0530)]
Remove make check warnings

5 years agoAdd blackbox test cases for submesh
Lakshminarayana Gurram [Tue, 5 Mar 2019 12:19:48 +0000 (17:49 +0530)]
Add blackbox test cases for submesh

5 years agoFix NULL checking of addrinfo structure in try_bind function
Lakshminarayana Gurram [Fri, 8 Mar 2019 05:10:59 +0000 (10:40 +0530)]
Fix NULL checking of addrinfo structure in try_bind function

5 years agoCheck for astyle version 3 before formatting the code.
Guus Sliepen [Tue, 12 Mar 2019 19:56:20 +0000 (20:56 +0100)]
Check for astyle version 3 before formatting the code.

Unfortunately, code formatters change their behaviour between versions.
The code currently requires astyle version 3.x, so check this before
running astyle. If the wrong version is installed, print an error.

5 years agoReduce locking in Catta callback functions to a minimum.
Guus Sliepen [Mon, 17 Dec 2018 02:14:45 +0000 (03:14 +0100)]
Reduce locking in Catta callback functions to a minimum.

5 years agoAdd a groupchat example program that uses the submesh feature.
lakshminarayanagurram [Mon, 25 Feb 2019 10:02:24 +0000 (11:02 +0100)]
Add a groupchat example program that uses the submesh feature.

5 years agoAdd devtool_get_all_submeshes().
lakshminarayanagurram [Mon, 25 Feb 2019 10:01:38 +0000 (11:01 +0100)]
Add devtool_get_all_submeshes().

5 years agoImprove support for submeshes.
lakshminarayanagurram [Mon, 25 Feb 2019 10:00:35 +0000 (11:00 +0100)]
Improve support for submeshes.

5 years agoAdd channel disconnection fix when node blacklisted
SS Roop [Tue, 12 Feb 2019 17:32:59 +0000 (23:02 +0530)]
Add channel disconnection fix when node blacklisted

5 years agoFix building the channels test.
Guus Sliepen [Tue, 19 Feb 2019 21:11:58 +0000 (22:11 +0100)]
Fix building the channels test.

5 years agoDo not define struct meshlink_open_params at all in meshlink.h.
Guus Sliepen [Tue, 19 Feb 2019 21:11:33 +0000 (22:11 +0100)]
Do not define struct meshlink_open_params at all in meshlink.h.

5 years agoDon't try to build node_* binaries for the optimal PMTU test cases anymore.
Guus Sliepen [Tue, 19 Feb 2019 21:10:36 +0000 (22:10 +0100)]
Don't try to build node_* binaries for the optimal PMTU test cases anymore.

5 years agoAdd test case for channel blacklist
sairoop-elear [Tue, 19 Feb 2019 20:38:53 +0000 (21:38 +0100)]
Add test case for channel blacklist

5 years agoCode formatting.
Guus Sliepen [Tue, 19 Feb 2019 20:41:58 +0000 (21:41 +0100)]
Code formatting.

5 years agoAdd optimal pmtu test cases
Guus Sliepen [Mon, 11 Feb 2019 18:18:54 +0000 (19:18 +0100)]
Add optimal pmtu test cases

5 years agoUpdate invite API in blackbox test cases
sairoop-elear [Fri, 8 Feb 2019 08:05:33 +0000 (13:35 +0530)]
Update invite API in blackbox test cases

5 years agoAdd network namespace test framework
sairoop-elear [Wed, 6 Feb 2019 05:06:34 +0000 (10:36 +0530)]
Add network namespace test framework

5 years agoModified meshlink_invite to generate invites for submesh
Lakshminarayana Gurram [Wed, 6 Feb 2019 02:47:30 +0000 (08:17 +0530)]
Modified meshlink_invite to generate invites for submesh

5 years agoAdded meshlink_submesh_open
Lakshminarayana Gurram [Wed, 6 Feb 2019 02:33:35 +0000 (08:03 +0530)]
Added meshlink_submesh_open

5 years agoAdd a test case for meshlink_get_all_nodes_by_dev_class().
Guus Sliepen [Thu, 31 Jan 2019 21:47:56 +0000 (22:47 +0100)]
Add a test case for meshlink_get_all_nodes_by_dev_class().

5 years agoAdd API functions to query nodes by device class.
Guus Sliepen [Thu, 31 Jan 2019 21:38:48 +0000 (22:38 +0100)]
Add API functions to query nodes by device class.

5 years agoAdd test cases for the PMTU discovery mechanism.
Guus Sliepen [Thu, 31 Jan 2019 21:21:52 +0000 (22:21 +0100)]
Add test cases for the PMTU discovery mechanism.

5 years agoUpdate the blackbox test infrastructure.
Guus Sliepen [Thu, 31 Jan 2019 21:20:40 +0000 (22:20 +0100)]
Update the blackbox test infrastructure.

5 years agoProvide a way to open MeshLink in its own network namespace.
Guus Sliepen [Sat, 26 Jan 2019 20:38:53 +0000 (21:38 +0100)]
Provide a way to open MeshLink in its own network namespace.

This causes all sockets from MeshLink to be opened in the given network
namespace, without affecting the application's namespace. Note that since
callback functions run inside MeshLink's own thread, the callback functions
inherit MeshLink's network namespace.

5 years agoOnly compile the monitor example application if ncurses is available.
Guus Sliepen [Wed, 16 Jan 2019 18:10:20 +0000 (19:10 +0100)]
Only compile the monitor example application if ncurses is available.

6 years agoCode formatting.
Guus Sliepen [Tue, 20 Nov 2018 15:21:58 +0000 (16:21 +0100)]
Code formatting.

6 years agoFix indentation.
Guus Sliepen [Tue, 20 Nov 2018 15:12:45 +0000 (16:12 +0100)]
Fix indentation.

6 years agoFix discovering node addresses from edges.
Guus Sliepen [Tue, 20 Nov 2018 15:10:17 +0000 (16:10 +0100)]
Fix discovering node addresses from edges.

The logic always skipped the first unique address found via edges, and since
in most cases there is only one such address, this would skip them altogether.

6 years agoSimplify rate limiting of incoming connections.
Guus Sliepen [Tue, 20 Nov 2018 15:07:44 +0000 (16:07 +0100)]
Simplify rate limiting of incoming connections.

We now really allow max_connection_burst connections per second, rather
than only allowing one second per connection on average, but allowing
a burst of max_connection_burst connections to go through.

6 years agoFix a potential segfault.
Guus Sliepen [Tue, 20 Nov 2018 15:01:12 +0000 (16:01 +0100)]
Fix a potential segfault.

This was found by Lakshminarayana Gurram.

6 years agoRemove debug messages printed to stderr.
Guus Sliepen [Tue, 20 Nov 2018 14:59:34 +0000 (15:59 +0100)]
Remove debug messages printed to stderr.

6 years agoFix socket leak every time meshlink_invite() is called.
Guus Sliepen [Tue, 20 Nov 2018 14:58:41 +0000 (15:58 +0100)]
Fix socket leak every time meshlink_invite() is called.

getlocaladdrname() would leak a socket every time it was called, which is
twice for every call to meshlink_invite() using the default flags.

6 years agoTry all CanonicalAddress and Address statements.
Guus Sliepen [Sun, 18 Nov 2018 23:03:27 +0000 (00:03 +0100)]
Try all CanonicalAddress and Address statements.

6 years agoAdd autoconf checks for LXC and cmocka.
Guus Sliepen [Sun, 18 Nov 2018 14:15:13 +0000 (15:15 +0100)]
Add autoconf checks for LXC and cmocka.

If LXC or cmocka are not installed, don't build the blackbox test suite.

6 years agoAdd the blackbox channel connection tests.
Guus Sliepen [Sun, 18 Nov 2018 13:50:08 +0000 (14:50 +0100)]
Add the blackbox channel connection tests.

6 years agoAdd the blackbox container based test suite.
Elear Solutions Dev [Thu, 8 Nov 2018 20:01:10 +0000 (21:01 +0100)]
Add the blackbox container based test suite.

This test suite uses LXC containers to simulate various nodes connected
to each other in different network topologies, and allows for realistic
testing of the MeshLink library.

6 years agoReally add both local and external address to the invitation URL.
Guus Sliepen [Tue, 9 Oct 2018 21:27:05 +0000 (23:27 +0200)]
Really add both local and external address to the invitation URL.

Also make sure we add both IPv4 and IPv6 if possible, use numeric addresses
unless hostnames resolve back to the same numeric address.

Add meshlink_invite_ex() that takes a flag that makes URL generation more
configurable.

6 years agoReformat the code.
Guus Sliepen [Tue, 9 Oct 2018 14:08:20 +0000 (16:08 +0200)]
Reformat the code.

6 years agoAdd an example using curses to monitor the state of MeshLink.
Guus Sliepen [Tue, 9 Oct 2018 14:06:50 +0000 (16:06 +0200)]
Add an example using curses to monitor the state of MeshLink.

6 years agoLock meshlink.conf to ensure only one instance can run at a time.
Guus Sliepen [Tue, 9 Oct 2018 12:06:04 +0000 (14:06 +0200)]
Lock meshlink.conf to ensure only one instance can run at a time.

6 years agoFix "Connection from (null)" log message.
Guus Sliepen [Thu, 30 Aug 2018 17:52:18 +0000 (19:52 +0200)]
Fix "Connection from (null)" log message.

6 years agoAlways add both CanonicalAddress and any local address to the invitation URL.
Guus Sliepen [Thu, 30 Aug 2018 17:45:13 +0000 (19:45 +0200)]
Always add both CanonicalAddress and any local address to the invitation URL.

We don't know in advance if the invitee will be on the LAN or outside
the LAN, and because hairpin routing is not working on many home
routers, it is safer to add all possible addresses.

Also, add the port number to each individual address in the URL, instead
of allowing only one port number.