]> git.meshlink.io Git - meshlink/commitdiff
Merge branch 'saverio'
authorGuus Sliepen <guus@meshlink.io>
Sun, 13 Apr 2014 11:19:45 +0000 (13:19 +0200)
committerGuus Sliepen <guus@meshlink.io>
Sun, 13 Apr 2014 11:19:45 +0000 (13:19 +0200)
1  2 
src/libmeshlink.c

diff --combined src/libmeshlink.c
index 1799ead0d7144c414f5d5b51de93a8bfde54be67,db0362b1e89680ae62ea54abdd44517fa0544a8c..ed3e6755a3663847c721cd61c95b20c422be98e5
@@@ -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;
  
  
        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;
  
  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;
  }