]> git.meshlink.io Git - meshlink/log
meshlink
9 years agoMerge remote-tracking branch 'origin/everbase' into discovery
Niklas Hofmann [Wed, 30 Jul 2014 22:40:28 +0000 (00:40 +0200)]
Merge remote-tracking branch 'origin/everbase' into discovery

9 years agoavahi mdns skeleton
Niklas Hofmann [Wed, 30 Jul 2014 22:39:39 +0000 (00:39 +0200)]
avahi mdns skeleton

9 years agoAdd meshlink_get_fingerprint().
Guus Sliepen [Wed, 30 Jul 2014 16:18:09 +0000 (18:18 +0200)]
Add meshlink_get_fingerprint().

This function returns a (fingerprint of a) node's public key in
printable ASCII.

9 years agoAdd proper error reporting to the chat examples.
Guus Sliepen [Wed, 30 Jul 2014 15:25:42 +0000 (17:25 +0200)]
Add proper error reporting to the chat examples.

9 years agoFix meshlink_get_all_nodes().
Guus Sliepen [Wed, 30 Jul 2014 15:22:39 +0000 (17:22 +0200)]
Fix meshlink_get_all_nodes().

9 years agoAdd missing meshlink_errnos in meshlink_start().
Guus Sliepen [Wed, 30 Jul 2014 15:06:47 +0000 (17:06 +0200)]
Add missing meshlink_errnos in meshlink_start().

9 years agoFix a crash when meshlink_open() is called with an invalid confbase.
Guus Sliepen [Wed, 30 Jul 2014 14:59:38 +0000 (16:59 +0200)]
Fix a crash when meshlink_open() is called with an invalid confbase.

9 years agoSet meshlink_errno everywhere an error is returned by the public API.
Guus Sliepen [Wed, 30 Jul 2014 14:52:47 +0000 (16:52 +0200)]
Set meshlink_errno everywhere an error is returned by the public API.

9 years agoMake sure mesh->name is available to the application.
Guus Sliepen [Wed, 30 Jul 2014 14:36:44 +0000 (16:36 +0200)]
Make sure mesh->name is available to the application.

For now, it will be replaced by a function.

9 years agoFix the C++ wrapper and the examples.
Guus Sliepen [Wed, 30 Jul 2014 13:09:50 +0000 (15:09 +0200)]
Fix the C++ wrapper and the examples.

9 years agoAdd meshlink_get_pmtu() to get the path MTU to a specific node.
Guus Sliepen [Wed, 30 Jul 2014 13:04:47 +0000 (15:04 +0200)]
Add meshlink_get_pmtu() to get the path MTU to a specific node.

9 years agomeshlink_send()'s len argument should be size_t, to match send().
Guus Sliepen [Wed, 30 Jul 2014 13:04:22 +0000 (15:04 +0200)]
meshlink_send()'s len argument should be size_t, to match send().

9 years agoAddress Lars's comments on the API.
Guus Sliepen [Wed, 30 Jul 2014 13:03:37 +0000 (15:03 +0200)]
Address Lars's comments on the API.

- Add meshlink_whitelist() as a counterpart to meshlink_blacklist().
- Change meshlink_get_all_nodes() to return memory allocated by MeshLink.
- Specify when pointers are allowed to be NULL.
- Specify when strings must be nul-terminated.
- Clarify some corner cases.

9 years agoMake sure meshlink_strerror() always returns a valid pointer to a string.
Guus Sliepen [Wed, 30 Jul 2014 09:05:08 +0000 (11:05 +0200)]
Make sure meshlink_strerror() always returns a valid pointer to a string.

9 years agoDocument that some functions can return NULL on error.
Guus Sliepen [Wed, 30 Jul 2014 09:04:42 +0000 (11:04 +0200)]
Document that some functions can return NULL on error.

9 years agoput macro value in parentheses
Lars [Wed, 30 Jul 2014 08:40:42 +0000 (10:40 +0200)]
put macro value in parentheses

9 years agoStart of the manynodes example.
Guus Sliepen [Tue, 29 Jul 2014 16:55:25 +0000 (18:55 +0200)]
Start of the manynodes example.

This example program starts many instances of MeshLink in a single
program, and can let them connect to each other. This is mainly usable
for testing scalability.

9 years agoDon't use errno as a local variable, because it's a macro.
Guus Sliepen [Tue, 29 Jul 2014 16:21:44 +0000 (18:21 +0200)]
Don't use errno as a local variable, because it's a macro.

9 years agoFix meshlink_close().
Guus Sliepen [Tue, 29 Jul 2014 15:57:20 +0000 (17:57 +0200)]
Fix meshlink_close().

Exit early when mesh->confbase = NULL. That should only happen after
meshlink_close() has already been called. Also, memset() before free(),
not after.

9 years agoMerge branch 'partition_healing' into everbase
Guus Sliepen [Tue, 29 Jul 2014 15:02:47 +0000 (17:02 +0200)]
Merge branch 'partition_healing' into everbase

9 years agoDocument how memory management is handled in the API.
Guus Sliepen [Tue, 29 Jul 2014 15:00:13 +0000 (17:00 +0200)]
Document how memory management is handled in the API.

9 years agoZero the struct meshlink_handle in meshlink_close().
Guus Sliepen [Tue, 29 Jul 2014 14:59:08 +0000 (16:59 +0200)]
Zero the struct meshlink_handle in meshlink_close().

This prevents potentially bad behaviour when the application calls
meshlink_close() twice on the same pointer.

9 years agoCheck all arguments of the public API for NULL pointers.
Guus Sliepen [Tue, 29 Jul 2014 14:57:09 +0000 (16:57 +0200)]
Check all arguments of the public API for NULL pointers.

9 years agoFix a memory leak.
Guus Sliepen [Tue, 29 Jul 2014 14:52:21 +0000 (16:52 +0200)]
Fix a memory leak.

9 years agoMake meshlink_main_loop static, it's not part of the API.
Guus Sliepen [Tue, 29 Jul 2014 14:51:52 +0000 (16:51 +0200)]
Make meshlink_main_loop static, it's not part of the API.

9 years agoRemove errno and errstr from meshlink_handle_t, add thread-local meshlink_errno.
Guus Sliepen [Tue, 29 Jul 2014 14:51:11 +0000 (16:51 +0200)]
Remove errno and errstr from meshlink_handle_t, add thread-local meshlink_errno.

Errors can happen outside of the context of a meshlink handle, for example
if meshlink_open() itself fails. Furthermore, errstr can always be derived
from errno, so it is redundant.

9 years agoWhitespace.
Aaron Krebs [Tue, 29 Jul 2014 14:03:46 +0000 (16:03 +0200)]
Whitespace.

9 years agoRefactoring.
Aaron Krebs [Tue, 29 Jul 2014 13:59:33 +0000 (15:59 +0200)]
Refactoring.

Removes duplicated code.

9 years agoCheck that num_unreachable > 0
Aaron Krebs [Tue, 29 Jul 2014 13:49:45 +0000 (15:49 +0200)]
Check that num_unreachable > 0

9 years agoFix a few memory leaks.
Guus Sliepen [Tue, 29 Jul 2014 13:49:00 +0000 (15:49 +0200)]
Fix a few memory leaks.

9 years agoConnect to unreachable nodes after enough stable connections exit.
Aaron Krebs [Tue, 29 Jul 2014 12:51:58 +0000 (14:51 +0200)]
Connect to unreachable nodes after enough stable connections exit.

9 years agoFix meshlink_add_address().
Guus Sliepen [Tue, 29 Jul 2014 10:24:25 +0000 (12:24 +0200)]
Fix meshlink_add_address().

This was broken due to commit 656a7bca4fd4acac5c3411087a6ed62fa4b7fa81.

9 years agoFix link to host.cgi for resolving our own external address.
Guus Sliepen [Tue, 29 Jul 2014 10:23:22 +0000 (12:23 +0200)]
Fix link to host.cgi for resolving our own external address.

9 years agoRevert fix to partition healing problem.
Aaron Krebs [Tue, 29 Jul 2014 09:29:41 +0000 (11:29 +0200)]
Revert fix to partition healing problem.

More complex solution needed.
This reverts commit e16463732db2045c884fa47aafa36a07c55b0c5c.
This reverts commit 3610b382c6971808aa1988e8af945a7816e7246b.

9 years agoFix compile error.
Aaron Krebs [Tue, 29 Jul 2014 08:42:36 +0000 (10:42 +0200)]
Fix compile error.

9 years agoTry connections to unreachable nodes more often.
Aaron Krebs [Tue, 29 Jul 2014 08:27:24 +0000 (10:27 +0200)]
Try connections to unreachable nodes more often.

9 years agoFix meshlink::channel_open().
Guus Sliepen [Mon, 28 Jul 2014 14:21:17 +0000 (16:21 +0200)]
Fix meshlink::channel_open().

9 years agoRemove some more traces of tinc.
Guus Sliepen [Sat, 26 Jul 2014 15:37:23 +0000 (17:37 +0200)]
Remove some more traces of tinc.

9 years agoFix warnings from Doxygen.
Guus Sliepen [Sat, 26 Jul 2014 15:21:42 +0000 (17:21 +0200)]
Fix warnings from Doxygen.

9 years agoUpdate TODO list.
Guus Sliepen [Sat, 26 Jul 2014 13:18:03 +0000 (15:18 +0200)]
Update TODO list.

9 years agoAdd a test for the channel API.
Guus Sliepen [Sat, 26 Jul 2014 12:45:04 +0000 (14:45 +0200)]
Add a test for the channel API.

It doesn't compile yet, so it's not included in the Makefile.

9 years agoAll data sent and received on channels is const.
Guus Sliepen [Sat, 26 Jul 2014 12:42:35 +0000 (14:42 +0200)]
All data sent and received on channels is const.

9 years agoFix declaration of meshlink_set_channel_receive_cb().
Guus Sliepen [Sat, 26 Jul 2014 12:41:27 +0000 (14:41 +0200)]
Fix declaration of meshlink_set_channel_receive_cb().

9 years agoAdd a C++ version of the basic test.
Guus Sliepen [Sat, 26 Jul 2014 12:18:03 +0000 (14:18 +0200)]
Add a C++ version of the basic test.

9 years agoDeclare the channel API.
Guus Sliepen [Sat, 26 Jul 2014 12:17:11 +0000 (14:17 +0200)]
Declare the channel API.

Channels are very much like TCP connections. Willingness to accept channels is declared by
setting a channel_accept callback. New channels can be created by calling channel_open(),
data can be sent using channel_send() and data received is passed via a channel_receive
callback.

9 years agoUpdate the TODO list.
Guus Sliepen [Fri, 25 Jul 2014 22:40:37 +0000 (00:40 +0200)]
Update the TODO list.

9 years agoThe tests now all print proper error messages.
Guus Sliepen [Fri, 25 Jul 2014 22:40:24 +0000 (00:40 +0200)]
The tests now all print proper error messages.

9 years agoStruct outgoing needs to remember to which mesh it belongs.
Guus Sliepen [Fri, 25 Jul 2014 22:24:02 +0000 (00:24 +0200)]
Struct outgoing needs to remember to which mesh it belongs.

The reason is that since free_outgoing() is called by the list algorithms, it can take only one
parameter (a pointer to a struct outgoing).

9 years agoRemove global variables past_request_tree and past_request_timeout.
Guus Sliepen [Fri, 25 Jul 2014 22:00:12 +0000 (00:00 +0200)]
Remove global variables past_request_tree and past_request_timeout.

9 years agoRemove global variable node_udp_cache.
Guus Sliepen [Fri, 25 Jul 2014 21:05:12 +0000 (23:05 +0200)]
Remove global variable node_udp_cache.

It was still accidentally used, causing tests that started two meshlink instances in the same
program to crash.

9 years agoImplement meshlink_sign() and _verify().
Guus Sliepen [Fri, 25 Jul 2014 16:33:40 +0000 (18:33 +0200)]
Implement meshlink_sign() and _verify().

9 years agoMove definition of outpacketqueue_t from meshlink.h to meshlink_internal.h.
Guus Sliepen [Sat, 21 Jun 2014 10:14:59 +0000 (12:14 +0200)]
Move definition of outpacketqueue_t from meshlink.h to meshlink_internal.h.

9 years agoFix errors in Doxygen markup.
Guus Sliepen [Sat, 21 Jun 2014 10:12:49 +0000 (12:12 +0200)]
Fix errors in Doxygen markup.

9 years agoAdd a Doxyfile so Doxygen creates a reference manual.
Guus Sliepen [Sat, 21 Jun 2014 10:03:57 +0000 (12:03 +0200)]
Add a Doxyfile so Doxygen creates a reference manual.

9 years agoUpdate TODO list.
Guus Sliepen [Tue, 17 Jun 2014 17:57:58 +0000 (19:57 +0200)]
Update TODO list.

9 years agoFree the meshlink_handle_t in meshlink_close().
Guus Sliepen [Tue, 10 Jun 2014 12:07:17 +0000 (14:07 +0200)]
Free the meshlink_handle_t in meshlink_close().

9 years agoFix crash when calling meshlink_close().
Guus Sliepen [Tue, 10 Jun 2014 12:06:08 +0000 (14:06 +0200)]
Fix crash when calling meshlink_close().

In event_loop_exit(), we should only unlink nodes, not try to free them,
since we don't do allocation in event.h anymore.

9 years agoAdd an example chat program for the C++ API.
Guus Sliepen [Tue, 10 Jun 2014 11:34:04 +0000 (13:34 +0200)]
Add an example chat program for the C++ API.

9 years agoAdd a header-only C++ wrapper.
Guus Sliepen [Tue, 10 Jun 2014 11:32:29 +0000 (13:32 +0200)]
Add a header-only C++ wrapper.

9 years agoMove declaration of meshlink_send_from_queue() to meshlink_internal.h.
Guus Sliepen [Tue, 10 Jun 2014 11:31:47 +0000 (13:31 +0200)]
Move declaration of meshlink_send_from_queue() to meshlink_internal.h.

9 years agoAllow meshlink_open() to be called with a NULL name, in anticipation of meshlink_join...
Saverio Proto [Sat, 7 Jun 2014 10:23:56 +0000 (12:23 +0200)]
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.

9 years agoDont use pthread_kill
Saverio Proto [Wed, 4 Jun 2014 14:55:55 +0000 (16:55 +0200)]
Dont use pthread_kill

9 years agoonly allow meshlink_join() when the library thread is not running
Saverio Proto [Tue, 3 Jun 2014 14:42:58 +0000 (16:42 +0200)]
only allow meshlink_join() when the library thread is not running

9 years agomeshlink_join: fix Segmentation Fault when invitation URL is missing the port number
Saverio Proto [Tue, 3 Jun 2014 14:41:08 +0000 (16:41 +0200)]
meshlink_join: fix Segmentation Fault when invitation URL is missing the port number

9 years agoProvide thread-safety to functions that return pointers to meshlink_node_t.
Saverio Proto [Mon, 2 Jun 2014 11:54:47 +0000 (13:54 +0200)]
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.

9 years agoMake meshlink_send return immediately. Implemented a queue for communication between...
Saverio Proto [Wed, 28 May 2014 19:48:46 +0000 (21:48 +0200)]
Make meshlink_send return immediately. Implemented a queue for communication between the application and library threads.

9 years agoRevert "Remove support for UNIX signals in the event library."
Saverio Proto [Wed, 28 May 2014 19:49:23 +0000 (21:49 +0200)]
Revert "Remove support for UNIX signals in the event library."

This reverts commit 12fd793a46d1695bedb96a5d9531dfd9f3efd7be.

9 years agoFix compiler warning of implicit declaration of function ‘str[n]casecmp’ [-Werror...
Saverio Proto [Sun, 1 Jun 2014 16:54:35 +0000 (18:54 +0200)]
Fix compiler warning of implicit declaration of function ‘str[n]casecmp’ [-Werror=implicit-function-declaration]

9 years agoAdd test cases for importing/exporting data and inviting/joining nodes.
Guus Sliepen [Sun, 1 Jun 2014 12:28:34 +0000 (14:28 +0200)]
Add test cases for importing/exporting data and inviting/joining nodes.

9 years agoAdd a basic implementation of meshlink_import() and _export().
Guus Sliepen [Sun, 1 Jun 2014 12:24:31 +0000 (14:24 +0200)]
Add a basic implementation of meshlink_import() and _export().

9 years agoDon't interactively ask for an Address when generating an invitation URL.
Guus Sliepen [Mon, 26 May 2014 12:57:38 +0000 (14:57 +0200)]
Don't interactively ask for an Address when generating an invitation URL.

This also adds a function to allow the application to set an Address.

9 years agoAdd missing basic.c test.
Guus Sliepen [Sun, 25 May 2014 20:05:50 +0000 (22:05 +0200)]
Add missing basic.c test.

9 years agoRemove old tests for tinc 1.1 and add a basic test for MeshLink.
Guus Sliepen [Sun, 25 May 2014 19:44:41 +0000 (21:44 +0200)]
Remove old tests for tinc 1.1 and add a basic test for MeshLink.

9 years agoReplace __TINC with __MESHLINK in the include guards.
Guus Sliepen [Sun, 25 May 2014 19:21:10 +0000 (21:21 +0200)]
Replace __TINC with __MESHLINK in the include guards.

9 years agoAdd #include "crypto.h" because we are using randomize().
Guus Sliepen [Sun, 25 May 2014 19:15:30 +0000 (21:15 +0200)]
Add #include "crypto.h" because we are using randomize().

9 years agoRe-add accidentily removed randomize() from crypto.c.
Guus Sliepen [Sun, 25 May 2014 19:14:34 +0000 (21:14 +0200)]
Re-add accidentily removed randomize() from crypto.c.

9 years agoMerge branch 'meshlink_blacklist2'
Guus Sliepen [Sun, 25 May 2014 18:51:02 +0000 (20:51 +0200)]
Merge branch 'meshlink_blacklist2'

9 years agoAutomatically add extern "C" when including meshlink.h in a C++ project.
Guus Sliepen [Sun, 25 May 2014 14:38:05 +0000 (16:38 +0200)]
Automatically add extern "C" when including meshlink.h in a C++ project.

9 years agoUse CryptGenRandom() instead of /dev/[u]random on Windows.
Guus Sliepen [Sun, 25 May 2014 14:26:37 +0000 (16:26 +0200)]
Use CryptGenRandom() instead of /dev/[u]random on Windows.

9 years agoCall WSAStartup() so that sockets work on Windows.
Guus Sliepen [Sun, 25 May 2014 14:26:04 +0000 (16:26 +0200)]
Call WSAStartup() so that sockets work on Windows.

9 years agoAllow MeshLink to be cross-compiled for Windows.
Guus Sliepen [Sun, 25 May 2014 14:25:31 +0000 (16:25 +0200)]
Allow MeshLink to be cross-compiled for Windows.

9 years agoRemove support for UNIX signals in the event library.
Guus Sliepen [Sun, 25 May 2014 14:23:51 +0000 (16:23 +0200)]
Remove support for UNIX signals in the event library.

9 years agoImplemented meshlink_blacklist feature
Saverio Proto [Tue, 20 May 2014 21:15:45 +0000 (23:15 +0200)]
Implemented meshlink_blacklist feature

using the meshlink_blacklist function the application is able to blacklist a node

data from with node will be discarded. No more data will be sent to this node.

the blacklisting is persistent in the host configuration file

9 years agoAdding comment meshlink_blacklist2
Saverio Proto [Fri, 23 May 2014 08:53:51 +0000 (10:53 +0200)]
Adding comment

9 years agoDont setup outgoing connection to blacklisted nodes
Saverio Proto [Fri, 23 May 2014 08:48:18 +0000 (10:48 +0200)]
Dont setup outgoing connection to blacklisted nodes

9 years agoRevert "Dont setup outgoing connection to blacklisted nodes"
Saverio Proto [Fri, 23 May 2014 08:44:48 +0000 (10:44 +0200)]
Revert "Dont setup outgoing connection to blacklisted nodes"

This reverts commit 8ac2f217eff96f2bc9da8a41031d453bf0f16a29.

9 years agoDont setup outgoing connection to blacklisted nodes
Saverio Proto [Fri, 23 May 2014 08:27:23 +0000 (10:27 +0200)]
Dont setup outgoing connection to blacklisted nodes

9 years agomake blacklisted yes/no
Saverio Proto [Fri, 23 May 2014 07:56:00 +0000 (09:56 +0200)]
make blacklisted yes/no

9 years agoMake blacklisting persistent in the config file
Saverio Proto [Fri, 23 May 2014 07:19:02 +0000 (09:19 +0200)]
Make blacklisting persistent in the config file

9 years agoDrop messages from blacklisted nodes that I receive over a n-hops path
Saverio Proto [Tue, 20 May 2014 21:53:08 +0000 (23:53 +0200)]
Drop messages from blacklisted nodes that I receive over a n-hops path

9 years agoTrivial test for meshlink_blacklist
Saverio Proto [Tue, 20 May 2014 21:15:45 +0000 (23:15 +0200)]
Trivial test for meshlink_blacklist

9 years agomeshlinkapp: fix compiler warnings
Saverio Proto [Wed, 21 May 2014 17:29:04 +0000 (19:29 +0200)]
meshlinkapp: fix compiler warnings

9 years agoDrop old invitation.[ch]
Saverio Proto [Wed, 21 May 2014 16:55:54 +0000 (18:55 +0200)]
Drop old invitation.[ch]

9 years agoMake sure meshlink_stop() works as advertised.
Guus Sliepen [Thu, 15 May 2014 15:53:54 +0000 (17:53 +0200)]
Make sure meshlink_stop() works as advertised.

At least on Linux, one way to signal a sleeping select() call in
the thread is to call shutdown() on the listening sockets. A subsequent
accept() returns EINVAL, we use that as a cue to shut down the main
loop.

9 years agoEnsure everything compiles with -Wall without giving warnings.
Guus Sliepen [Wed, 14 May 2014 21:36:24 +0000 (23:36 +0200)]
Ensure everything compiles with -Wall without giving warnings.

Mostly by using void pointers for opaque objects and removing unused variables.

9 years agoFix a filedescriptor leak.
Guus Sliepen [Wed, 14 May 2014 21:06:23 +0000 (23:06 +0200)]
Fix a filedescriptor leak.

Found by cppcheck.

9 years agoDon't forget about the channel library.
Guus Sliepen [Wed, 14 May 2014 21:00:05 +0000 (23:00 +0200)]
Don't forget about the channel library.

9 years agoUpdate the TODO list.
Guus Sliepen [Wed, 14 May 2014 20:57:44 +0000 (22:57 +0200)]
Update the TODO list.

9 years agoCall receive_cb() when there is data for the application.
Guus Sliepen [Mon, 12 May 2014 18:00:23 +0000 (20:00 +0200)]
Call receive_cb() when there is data for the application.

9 years agoCall node_status_cb() whenever a node goes up or down.
Guus Sliepen [Mon, 12 May 2014 17:53:54 +0000 (19:53 +0200)]
Call node_status_cb() whenever a node goes up or down.