+
+ struct sockaddr_storage naddr;
+ memset(&naddr, 0, sizeof(naddr));
+
+ switch(address->proto)
+ {
+ case AVAHI_PROTO_INET:
+ {
+ struct sockaddr_in* naddr_in = (struct sockaddr_in*)&naddr;
+ naddr_in->sin_family = AF_INET;
+ naddr_in->sin_port = port;
+ naddr_in->sin_addr.s_addr = address->data.ipv4.address;
+ }
+ break;
+
+ case AVAHI_PROTO_INET6:
+ {
+ struct sockaddr_in6* naddr_in = (struct sockaddr_in6*)&naddr;
+ naddr_in->sin6_family = AF_INET6;
+ naddr_in->sin6_port = port;
+ memcpy(naddr_in->sin6_addr.s6_addr, address->data.ipv6.address, sizeof(naddr_in->sin6_addr.s6_addr));
+ }
+ break;
+
+ default:
+ naddr.ss_family = AF_UNKNOWN;
+ }
+
+ // @TODO: aquire mutex?
+ meshlink_hint_address(mesh, node->name, &naddr);