]> git.meshlink.io Git - meshlink/blobdiff - src/net_setup.c
Merge branch 'channels'
[meshlink] / src / net_setup.c
index 68b8ed7499d92209573e5aeb582bc991e753b0d4..1ba98077046b3d709b7d7db09ecef73bdfc798ea 100644 (file)
@@ -32,8 +32,6 @@
 #include "utils.h"
 #include "xalloc.h"
 
-int autoconnect = 3;
-
 bool node_read_ecdsa_public_key(meshlink_handle_t *mesh, node_t *n) {
        if(ecdsa_active(n->ecdsa))
                return true;
@@ -124,10 +122,8 @@ static bool read_invitation_key(meshlink_handle_t *mesh) {
        return mesh->invitation_key;
 }
 
-bool node_read_dclass(meshlink_handle_t *mesh, node_t *n) {
-       if(n->dclass != 0)
-               return true;
-
+bool node_read_devclass(meshlink_handle_t *mesh, node_t *n) {
+       
        splay_tree_t *config_tree;
        char *p;
 
@@ -135,19 +131,23 @@ bool node_read_dclass(meshlink_handle_t *mesh, node_t *n) {
        if(!read_host_config(mesh, config_tree, n->name))
                goto exit;
 
-       if(get_config_string(lookup_config(config_tree, "DeviceClass"), &p)) {
-               n->dclass = atoi(p);
+       if(get_config_string(lookup_config(config_tree, "DeviceClass"), &p))
+       {
+               n->devclass = atoi(p);
                free(p);
        }
 
+       if(n->devclass < 0 || n->devclass > _DEV_CLASS_MAX)
+               { n->devclass = _DEV_CLASS_MAX; }
+
 exit:
        exit_configuration(&config_tree);
-       return n->dclass != 0;
+       return n->devclass != 0;
 }
 
-bool node_write_dclass(meshlink_handle_t *mesh, node_t *n) {
+bool node_write_devclass(meshlink_handle_t *mesh, node_t *n) {
 
-       if(n->dclass == 0)
+       if(n->devclass < 0 || n->devclass > _DEV_CLASS_MAX)
                return false;
 
        bool result = false;
@@ -167,7 +167,7 @@ bool node_write_dclass(meshlink_handle_t *mesh, node_t *n) {
                config_add(config_tree, cnf);
        }
 
-       set_config_int(cnf, n->dclass);
+       set_config_int(cnf, n->devclass);
 
        if(!write_host_config(mesh, config_tree, n->name))
                goto fail;
@@ -201,7 +201,7 @@ void load_all_nodes(meshlink_handle_t *mesh) {
 
                n = new_node();
                n->name = xstrdup(ent->d_name);
-               node_read_dclass(mesh, n);
+               node_read_devclass(mesh, n);
                node_add(mesh, n);
        }
 
@@ -230,7 +230,6 @@ bool setup_myself_reloadable(meshlink_handle_t *mesh) {
        mesh->localdiscovery = true;
        keylifetime = 3600; // TODO: check if this can be removed as well
        mesh->maxtimeout = 900;
-       autoconnect = 3;
        mesh->self->options |= OPTION_PMTU_DISCOVERY;
 
        read_invitation_key(mesh);
@@ -332,7 +331,7 @@ bool setup_myself(meshlink_handle_t *mesh) {
        mesh->self = new_node();
        mesh->self->connection = new_connection();
        mesh->self->name = name;
-       mesh->self->dclass = mesh->dclass;
+       mesh->self->devclass = mesh->devclass;
        mesh->self->connection->name = xstrdup(name);
        read_host_config(mesh, mesh->config, name);
 
@@ -379,12 +378,13 @@ bool setup_myself(meshlink_handle_t *mesh) {
        mesh->self->via = mesh->self;
        mesh->self->status.reachable = true;
        mesh->self->last_state_change = mesh->loop.now.tv_sec;
+
+       node_write_devclass(mesh, mesh->self);
        node_add(mesh, mesh->self);
 
        graph(mesh);
 
-       if(autoconnect)
-               load_all_nodes(mesh);
+       load_all_nodes(mesh);
 
        /* Open sockets */