+static void set_addr(struct uh_addr *addr, void *src)
+{
+ struct sockaddr_in *sin = src;
+ struct sockaddr_in6 *sin6 = src;
+
+ addr->family = sin->sin_family;
+ if (addr->family == AF_INET) {
+ addr->port = ntohs(sin->sin_port);
+ memcpy(&addr->in, &sin->sin_addr, sizeof(addr->in));
+ } else {
+ addr->port = ntohs(sin6->sin6_port);
+ memcpy(&addr->in6, &sin6->sin6_addr, sizeof(addr->in6));
+ }
+}
+