]> git.meshlink.io Git - meshlink/blobdiff - src/net_setup.c
Don't use static variables when choosing a broadcast address.
[meshlink] / src / net_setup.c
index e79550327d1ec5bf15cdc79a4f03a4bda6a3f5ad..367ccd293857f98162b50ba4a8a4afda5f3be217 100644 (file)
@@ -381,6 +381,16 @@ static bool add_listen_address(meshlink_handle_t *mesh, char *address, bool bind
 
                mesh->listen_socket[mesh->listen_sockets].bindto = bindto;
                memcpy(&mesh->listen_socket[mesh->listen_sockets].sa, aip->ai_addr, aip->ai_addrlen);
+               memcpy(&mesh->listen_socket[mesh->listen_sockets].broadcast_sa, aip->ai_addr, aip->ai_addrlen);
+
+               if(aip->ai_family == AF_INET6) {
+                       mesh->listen_socket[mesh->listen_sockets].broadcast_sa.in6.sin6_addr.s6_addr[0x0] = 0xff;
+                       mesh->listen_socket[mesh->listen_sockets].broadcast_sa.in6.sin6_addr.s6_addr[0x1] = 0x02;
+                       mesh->listen_socket[mesh->listen_sockets].broadcast_sa.in6.sin6_addr.s6_addr[0xf] = 0x01;
+               } else {
+                       mesh->listen_socket[mesh->listen_sockets].broadcast_sa.in.sin_addr.s_addr = 0xffffffff;
+               }
+
                mesh->listen_sockets++;
                success = true;
        }