]> git.meshlink.io Git - meshlink/blobdiff - src/net_setup.c
Determine the local node's address(es) and add them to its host config file.
[meshlink] / src / net_setup.c
index fd4386746c2b1f626a35bb273e456ce3f08a80b0..a2c441417b8e988b78118fbab1daa8b029726614 100644 (file)
@@ -83,7 +83,7 @@ bool read_ecdsa_private_key(meshlink_handle_t *mesh) {
        char filename[PATH_MAX];
 
        snprintf(filename,PATH_MAX, "%s" SLASH "ecdsa_key.priv", mesh->confbase);
-       fp = fopen(filename, "r");
+       fp = fopen(filename, "rb");
 
        if(!fp) {
                logger(mesh, MESHLINK_ERROR, "Error reading ECDSA private key file: %s", strerror(errno));
@@ -110,7 +110,7 @@ static bool read_invitation_key(meshlink_handle_t *mesh) {
 
        snprintf(filename,PATH_MAX, "%s" SLASH "invitations" SLASH "ecdsa_key.priv", mesh->confbase);
 
-       fp = fopen(filename, "r");
+       fp = fopen(filename, "rb");
 
        if(fp) {
                mesh->invitation_key = ecdsa_read_pem_private_key(fp);
@@ -123,9 +123,7 @@ static bool read_invitation_key(meshlink_handle_t *mesh) {
 }
 
 bool node_read_devclass(meshlink_handle_t *mesh, node_t *n) {
-       if(n->devclass != 0)
-               return true;
-
+       
        splay_tree_t *config_tree;
        char *p;
 
@@ -149,7 +147,7 @@ exit:
 
 bool node_write_devclass(meshlink_handle_t *mesh, node_t *n) {
 
-       if(n->devclass == 0)
+       if(n->devclass < 0 || n->devclass > _DEV_CLASS_MAX)
                return false;
 
        bool result = false;
@@ -380,6 +378,8 @@ 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);