From: Guus Sliepen Date: Sun, 13 Apr 2014 11:19:45 +0000 (+0200) Subject: Merge branch 'saverio' X-Git-Url: http://git.meshlink.io/?a=commitdiff_plain;h=4753057b6be67efe83454e5e203b4cdc2f4ba143;hp=-c;p=meshlink Merge branch 'saverio' --- 4753057b6be67efe83454e5e203b4cdc2f4ba143 diff --combined src/libmeshlink.c index 1799ead0,db0362b1..ed3e6755 --- a/src/libmeshlink.c +++ b/src/libmeshlink.c @@@ -372,19 -372,6 +372,19 @@@ bool tinc_start(const char* confbaseapi return true; } +__attribute__((constructor)) static void meshlink_init(void) { + /* Slllluuuuuuurrrrp! */ + + gettimeofday(&now, NULL); + srand(now.tv_sec + now.tv_usec); + crypto_init(); +} + +__attribute__((destructor)) static void meshlink_exit(void) { + crypto_exit(); +} + + bool tinc_main_thread(void * in) { static bool status = false; @@@ -397,6 -384,12 +397,6 @@@ init_configuration(&config_tree); - /* Slllluuuuuuurrrrp! */ - - gettimeofday(&now, NULL); - srand(now.tv_sec + now.tv_usec); - crypto_init(); - if(!read_server_config()) return false; @@@ -463,6 -456,8 +463,6 @@@ end //free(priority); - crypto_exit(); - exit_configuration(&config_tree); return status; @@@ -471,57 -466,30 +471,30 @@@ bool tinc_stop(); - bool route_meshlink(node_t *source,vpn_packet_t *packet) { - - printf("data %s\n",packet->data); - printf("data 16%s\n",packet->data+16); - printf("data 32%s\n",packet->data+32); - node_t* owner = NULL; - - tincpackethdr* hdr = (tincpackethdr*)packet->data; - owner = lookup_node(hdr->destination); - - if (owner == NULL) { - //Lookup failed - printf("NULL\n"); - return false; - } - printf("lookupnode %s\n",owner->name); - - if(!owner->status.reachable) { - //Do some here - return false; - } - - //TODO: I skipped here a lot of checks ! - - send_packet(owner,packet); - - } // can be called from any thread bool tinc_send_packet(node_t *receiver, const char* buf, unsigned int len) { vpn_packet_t packet; tincpackethdr* hdr = malloc(sizeof(tincpackethdr)); - - if (sizeof(hdr) + len > MAXSIZE) { + if (sizeof(tincpackethdr) + len > MAXSIZE) { //log something return false; } + memset(hdr->legacymtu,1,sizeof(hdr->legacymtu)); memcpy(hdr->destination,receiver->name,sizeof(hdr->destination)); memcpy(hdr->source,myself->name,sizeof(hdr->source)); packet.priority = 0; - packet.len = len + 32; + packet.len = sizeof(tincpackethdr) + len; - memcpy(packet.data,hdr,32); - memcpy(packet.data+32,buf,len); + memcpy(packet.data,hdr,sizeof(tincpackethdr)); + memcpy(packet.data+sizeof(tincpackethdr),buf,len); myself->in_packets++; myself->in_bytes += packet.len; - route_meshlink(myself, &packet); + route(myself, &packet); return true; }