Improve recently seen address cache
[tinc] / src / protocol_subnet.c
index 3e82e47..526cd96 100644 (file)
 
 #include "conf.h"
 #include "connection.h"
+#include "crypto.h"
 #include "logger.h"
-#include "net.h"
-#include "netutl.h"
 #include "node.h"
 #include "protocol.h"
 #include "subnet.h"
 #include "utils.h"
-#include "xalloc.h"
 
 bool send_add_subnet(connection_t *c, const subnet_t *subnet) {
        char netstr[MAXNETSTR];
@@ -39,14 +37,14 @@ bool send_add_subnet(connection_t *c, const subnet_t *subnet) {
                return false;
        }
 
-       return send_request(c, "%d %x %s %s", ADD_SUBNET, rand(), subnet->owner->name, netstr);
+       return send_request(c, "%d %x %s %s", ADD_SUBNET, prng(UINT32_MAX), subnet->owner->name, netstr);
 }
 
 bool add_subnet_h(connection_t *c, const char *request) {
        char subnetstr[MAX_STRING_SIZE];
        char name[MAX_STRING_SIZE];
        node_t *owner;
-       subnet_t s = {NULL}, *new, *old;
+       subnet_t s = {0}, *new, *old;
 
        if(sscanf(request, "%*d %*x " MAX_STRING " " MAX_STRING, name, subnetstr) != 2) {
                logger(DEBUG_ALWAYS, LOG_ERR, "Got bad %s from %s (%s)", "ADD_SUBNET", c->name,
@@ -86,8 +84,7 @@ bool add_subnet_h(connection_t *c, const char *request) {
        }
 
        if(!owner) {
-               owner = new_node();
-               owner->name = xstrdup(name);
+               owner = new_node(name);
                node_add(owner);
        }
 
@@ -155,14 +152,14 @@ bool send_del_subnet(connection_t *c, const subnet_t *s) {
                return false;
        }
 
-       return send_request(c, "%d %x %s %s", DEL_SUBNET, rand(), s->owner->name, netstr);
+       return send_request(c, "%d %x %s %s", DEL_SUBNET, prng(UINT32_MAX), s->owner->name, netstr);
 }
 
 bool del_subnet_h(connection_t *c, const char *request) {
        char subnetstr[MAX_STRING_SIZE];
        char name[MAX_STRING_SIZE];
        node_t *owner;
-       subnet_t s = {NULL}, *find;
+       subnet_t s = {0}, *find;
 
        if(sscanf(request, "%*d %*x " MAX_STRING " " MAX_STRING, name, subnetstr) != 2) {
                logger(DEBUG_ALWAYS, LOG_ERR, "Got bad %s from %s (%s)", "DEL_SUBNET", c->name,