]> git.meshlink.io Git - meshlink/log
meshlink
10 years agoRemove references to port 655 from MeshLink.
Guus Sliepen [Thu, 7 Aug 2014 16:33:08 +0000 (18:33 +0200)]
Remove references to port 655 from MeshLink.

First of all, port 655 is officially registered as the port for tinc,
not for any other application. Second, applications built on top of
MeshLink will probably run as non-root, and so cannot bind to ports
lower than 1024 anyway.

- Never try binding to port 655 when setting up a new node.
- Always require a valid port number when making connections.

10 years agoSpeed up making outgoing connections.
Guus Sliepen [Thu, 7 Aug 2014 15:47:58 +0000 (17:47 +0200)]
Speed up making outgoing connections.

- Immediately fire the periodic_handler() when the main loop starts.
- Use a very short timeout if we haven't made enough real and pending
  connections yet to fill the autoconnect budget.

This basically means we immediately start up to 3 outgoing connections
to different nodes.

10 years agoRemove debug messages from meshlink_queue.h.
Guus Sliepen [Thu, 7 Aug 2014 15:01:50 +0000 (17:01 +0200)]
Remove debug messages from meshlink_queue.h.

10 years agoAllow meshlink_start() to work after meshlink_stop().
Guus Sliepen [Thu, 7 Aug 2014 14:27:43 +0000 (16:27 +0200)]
Allow meshlink_start() to work after meshlink_stop().

The way the MeshLink thread is signaled that it has to quit using
meshlink_stop() is by shutting down one of the listening sockets.
However, it has to be repaired to allow meshlink_start() to work again.

Maybe not the prettiest solution.

10 years agoCall meshlink_stop before meshlink_join in the chat program
Saverio Proto [Thu, 7 Aug 2014 14:18:38 +0000 (14:18 +0000)]
Call meshlink_stop before meshlink_join in the chat program

10 years agoAfter killing meshlink thread update the bool status threadstarted
Saverio Proto [Thu, 7 Aug 2014 13:04:18 +0000 (15:04 +0200)]
After killing meshlink thread update the bool status threadstarted

10 years agoAdd a public API for the thread-safe message queue.
Guus Sliepen [Thu, 7 Aug 2014 13:41:16 +0000 (15:41 +0200)]
Add a public API for the thread-safe message queue.

10 years agoRemove .dirstamp file.
Guus Sliepen [Thu, 7 Aug 2014 12:34:37 +0000 (14:34 +0200)]
Remove .dirstamp file.

It absolutely does not belong in the repository.

10 years agoes compiliert, aber failed immernoch. :-( was ist da los???
Lars [Sun, 3 Aug 2014 23:31:42 +0000 (01:31 +0200)]
es compiliert, aber failed immernoch. :-( was ist da los???

10 years agoobject-oriented interface 1st durchstich, incl. chat program adopted. :-)
Lars [Sun, 3 Aug 2014 23:25:12 +0000 (01:25 +0200)]
object-oriented interface 1st durchstich, incl. chat program adopted. :-)

10 years agoFix compiler warnings in manynodes.c.
Guus Sliepen [Thu, 31 Jul 2014 15:18:08 +0000 (17:18 +0200)]
Fix compiler warnings in manynodes.c.

10 years agoCheck return value of fread() when reading from /dev/urandom.
Guus Sliepen [Thu, 31 Jul 2014 15:13:21 +0000 (17:13 +0200)]
Check return value of fread() when reading from /dev/urandom.

10 years agowe might have to think about locking in case we call meshlink-methods - todo added
Niklas Hofmann [Thu, 31 Jul 2014 01:26:59 +0000 (03:26 +0200)]
we might have to think about locking in case we call meshlink-methods - todo added

10 years agoignore unknown address types (just in case)
Niklas Hofmann [Thu, 31 Jul 2014 01:21:53 +0000 (03:21 +0200)]
ignore unknown address types (just in case)

10 years agoa first mdns discovery implementation
Niklas Hofmann [Thu, 31 Jul 2014 01:08:06 +0000 (03:08 +0200)]
a first mdns discovery implementation

10 years agoMerge branch 'address_hint_api' into discovery
Niklas Hofmann [Wed, 30 Jul 2014 23:51:55 +0000 (01:51 +0200)]
Merge branch 'address_hint_api' into discovery

10 years agoavahi mdns integration
Niklas Hofmann [Wed, 30 Jul 2014 23:44:43 +0000 (01:44 +0200)]
avahi mdns integration

10 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

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

10 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.

10 years agoFree memory.
Aaron Krebs [Wed, 30 Jul 2014 16:04:17 +0000 (18:04 +0200)]
Free memory.

10 years agoImplemented meshlink_hint_address().
Aaron Krebs [Wed, 30 Jul 2014 15:44:58 +0000 (17:44 +0200)]
Implemented meshlink_hint_address().

10 years agoUtility functions to get string representation of sockaddr components.
Aaron Krebs [Wed, 30 Jul 2014 15:44:23 +0000 (17:44 +0200)]
Utility functions to get string representation of sockaddr components.

10 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.

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

10 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().

10 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.

10 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.

10 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.

10 years agoNew API function for address hinting.
Aaron Krebs [Wed, 30 Jul 2014 14:14:39 +0000 (16:14 +0200)]
New API function for address hinting.

10 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.

10 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.

10 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().

10 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.

10 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.

10 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.

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

10 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.

10 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.

10 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.

10 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

10 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.

10 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.

10 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.

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

10 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.

10 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.

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

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

Removes duplicated code.

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

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

10 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.

10 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.

10 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.

10 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.

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

10 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.

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

10 years agoA first attempt at merging UTCP into MeshLink. channels
Guus Sliepen [Sat, 26 Jul 2014 17:45:51 +0000 (19:45 +0200)]
A first attempt at merging UTCP into MeshLink.

The accept callbacks are a bit awkward at the moment, it's better if
UTCP drops the pre_accept and just has one callback.

10 years agoImport UTCP as a git submodule.
Guus Sliepen [Sat, 26 Jul 2014 16:47:10 +0000 (18:47 +0200)]
Import UTCP as a git submodule.

10 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.

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

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

10 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.

10 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.

10 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().

10 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.

10 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.

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

10 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.

10 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).

10 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.

10 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.

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

10 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.

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

10 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.

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

10 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().

10 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.

10 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.

10 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.

10 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.

10 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.

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

10 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

10 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

10 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.

10 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.

10 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.

10 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]

10 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.

10 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().

10 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.

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

10 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.

10 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.

10 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().

10 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.

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