]> git.meshlink.io Git - meshlink/commitdiff
Initial callback support for data received from the VPN to the Application
authorSaverio Proto <zioproto@gmail.com>
Sun, 13 Apr 2014 21:53:54 +0000 (23:53 +0200)
committerSaverio Proto <zioproto@gmail.com>
Sun, 13 Apr 2014 21:53:54 +0000 (23:53 +0200)
meshlink-sample/meshlinkapp.c
src/libmeshlink.c
src/libmeshlink.h
src/route.c

index ff9bad1eb8cd7c61da7f76acd40308b764c2af0a..25949b161203d6519d793a99e591b23a7e289c52 100644 (file)
@@ -1,5 +1,12 @@
 #include <libmeshlink.h>
 
+
+void handle_recv_data(void *data);
+void handle_recv_data(void *data) {
+printf("do nothing for now\n");
+
+}
+
 int main(int argc , char **argv){
 
 char *confbase = argc > 1 ? argv[1] : "/tmp/meshlink/";
@@ -15,6 +22,10 @@ remotenode->name = remotename;
 
 tinc_setup(confbase, name);
 tinc_start(confbase);
+
+//Register callback function for incoming data
+recvdata_register_cb(handle_recv_data);
+
 sleep(2); //there is a race condition here, tinc_start detaches to a thread the needs time to setup stuff
 while(1) {
 
index fd7426cace616e9e48e2e2a377689ad7d81169ef..e900dd11841c49dcb9e67990a3e8fd040e976191 100644 (file)
@@ -31,6 +31,7 @@
 #include "protocol.h"
 
 char *hosts_dir = NULL;
+recvdata_cb_t recv_callback;
 static char *name = NULL;
 char *tinc_conf = NULL;
 static bool tty = false;
@@ -363,7 +364,6 @@ __attribute__((destructor)) static void meshlink_exit(void) {
 
 void *tinc_main_thread(void * in) {
        static bool status = false;
-
        /* If nonzero, write log entries to a separate file. */
        bool use_logfile = false;
 
@@ -491,6 +491,8 @@ automatically distributed blacklist or whitelist would be the next step.
 */
 bool tinc_blacklist(node_t *host);
 
-
+void recvdata_register_cb(recvdata_cb_t cb) {
+recv_callback = cb;
+};
 
 
index e70f89f074c025def11132971750f77622ab9a7f..0cbfec7ec9150200df350a3994d37b9b1d074178 100644 (file)
 #include "logger.h"
 #include "route.h"
 
+typedef void (*recvdata_cb_t)(void *data);
+void recvdata_register_cb(recvdata_cb_t cb);
+
+extern recvdata_cb_t recv_callback;
+
 extern char *hosts_dir;
 extern FILE *fopenmask(const char *filename, const char *mode, mode_t perms);
 
index f09a1041f1f8aca3561a49001fc74680180462af..539796dff9ac2cd89ae3c2aa90a23fd3959369ee 100644 (file)
@@ -74,6 +74,7 @@ void route(node_t *source,vpn_packet_t *packet) {
     if (owner == myself ) {
     //TODO: implement sending received data from meshlink library to the application
     logger(DEBUG_TRAFFIC, LOG_WARNING, "I received a packet for me with payload: %s \n", packet->data + 46);
+    (recv_callback)(NULL);
     return;
     }