return true;
}
-static int setup_tcp_listen_socket(meshlink_handle_t *mesh, const struct addrinfo *aip) {
+int setup_tcp_listen_socket(meshlink_handle_t *mesh, const struct addrinfo *aip) {
int nfd = socket(aip->ai_family, SOCK_STREAM, IPPROTO_TCP);
if(nfd == -1) {
return nfd;
}
-static int setup_udp_socket(meshlink_handle_t *mesh, const struct addrinfo *aip) {
+int setup_udp_listen_socket(meshlink_handle_t *mesh, const struct addrinfo *aip) {
int nfd = socket(aip->ai_family, SOCK_DGRAM, IPPROTO_UDP);
if(nfd == -1) {
.ai_family = AF_UNSPEC,
.ai_socktype = SOCK_STREAM,
.ai_protocol = IPPROTO_TCP,
- .ai_flags = AI_PASSIVE,
+ .ai_flags = AI_PASSIVE | AI_NUMERICSERV,
};
int err = getaddrinfo(NULL, mesh->myport, &hint, &ai);
/* If TCP worked, then we require that UDP works as well. */
- int udp_fd = setup_udp_socket(mesh, aip);
+ int udp_fd = setup_udp_listen_socket(mesh, aip);
if(udp_fd == -1) {
closesocket(tcp_fd);
/*
Configure node_t mesh->self and set up the local sockets (listen only)
*/
-bool setup_myself(meshlink_handle_t *mesh) {
+static bool setup_myself(meshlink_handle_t *mesh) {
/* Set some defaults */
mesh->maxtimeout = 900;
/* Done. */
- mesh->last_config_check = mesh->loop.now.tv_sec;
mesh->last_unreachable = mesh->loop.now.tv_sec;
return true;