+ const struct sockaddr *sa;
+ struct sockaddr_in v4;
+ struct sockaddr_in6 v6;
+ size_t salen;
+
+ switch (cache->af)
+ {
+ case AF_INET:
+ GNUNET_assert (cache->ip_len == sizeof (struct in_addr));
+ sa = (const struct sockaddr*) &v4;
+ memset (&v4, 0, sizeof (v4));
+ v4.sin_addr = * (const struct in_addr*) cache->ip;
+ v4.sin_family = AF_INET;
+#if HAVE_SOCKADDR_IN_SIN_LEN
+ v4.sin_len = sizeof (v4);
+#endif
+ salen = sizeof (v4);
+ break;
+ case AF_INET6:
+ GNUNET_assert (cache->ip_len == sizeof (struct in6_addr));
+ sa = (const struct sockaddr*) &v6;
+ memset (&v6, 0, sizeof (v6));
+ v6.sin6_addr = * (const struct in6_addr*) cache->ip;
+ v6.sin6_family = AF_INET6;
+#if HAVE_SOCKADDR_IN_SIN_LEN
+ v6.sin6_len = sizeof (v6);
+#endif
+ salen = sizeof (v6);
+ break;
+ default:
+ GNUNET_assert (0);
+ }