X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Flibmeshlink.c;h=d6e199fd6c0ad9538af21abb84573cddbfa04ebb;hb=084ba04f51441098c55d3bd21b11bbe368e7b52e;hp=f84642dfc9c11ff7a77fdf4ae8e2fa4da44b765e;hpb=a337cef0be4a75ff0f4d88264d242444240fcc66;p=meshlink diff --git a/src/libmeshlink.c b/src/libmeshlink.c index f84642df..d6e199fd 100644 --- a/src/libmeshlink.c +++ b/src/libmeshlink.c @@ -39,7 +39,6 @@ static bool do_mlock = false; */ bool setup_meshlink_network(void) { init_connections(); - init_subnets(); init_nodes(); init_edges(); init_requests(); @@ -63,13 +62,6 @@ bool setup_meshlink_network(void) { if(!setup_myself()) return false; - if(!init_control()) - return false; - - /* Run subnet-up scripts for our own subnets */ - - subnet_update(myself, NULL, true); - return true; } @@ -548,6 +540,33 @@ end: bool tinc_stop(); +bool route_meshlink(node_t *source,vpn_packet_t *packet) { + + printf("data %s\n",packet->data); + printf("data 11%s\n",packet->data+11); + 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) { @@ -565,12 +584,12 @@ bool tinc_send_packet(node_t *receiver, const char* buf, unsigned int len) { packet.priority = 0; - memcpy(packet.data,hdr,sizeof(hdr)); - memcpy(packet.data+sizeof(hdr),buf,len); + memcpy(packet.data,hdr,32); + memcpy(packet.data+32,buf,len); myself->in_packets++; myself->in_bytes += packet.len; - route(myself, &packet); + route_meshlink(myself, &packet); return true; }