+2005-05-08 Jukka Ollila <jaollila@niksula.hut.fi>
+ (Adapted slightly by Michael Poole.)
+
+ * ircd/os_generic.c (sockaddr_to_irc): Change to use v4compat
+ addresses event when !defined(IPV6).
+
2005-05-07 Michael Poole <mdpoole@troilus.org>
* ircd/channel.c (joinbuf_join): Be smarter about what source to
#define getrusage(a,b) syscall(SYS_GETRUSAGE, a, b)
#endif
+
+static void sockaddr_in_to_irc(const struct sockaddr_in *v4,
+ struct irc_sockaddr *irc)
+{
+ memset(&irc->addr, 0, 5*sizeof(int16_t));
+ irc->addr.in6_16[5] = 0xffff;
+ memcpy(&irc->addr.in6_16[6], &v4->sin_addr, sizeof(v4->sin_addr));
+ irc->port = ntohs(v4->sin_port);
+}
+
+
#ifdef IPV6
/** Native socket address type. */
#define sockaddr_native sockaddr_in6
irc->port = ntohs(v6->sin6_port);
}
else if (v6->sin6_family == AF_INET) {
- const struct sockaddr_in *v4 = (const struct sockaddr_in*)v6;
- memset(&irc->addr, 0, 5*sizeof(int16_t));
- irc->addr.in6_16[5] = 0xffff;
- memcpy(&irc->addr.in6_16[6], &v4->sin_addr, sizeof(v4->sin_addr));
- irc->port = ntohs(v4->sin_port);
+ sockaddr_in_to_irc((struct sockaddr_in *)v6, irc);
}
else assert(0 && "Unhandled native address family");
}
#else
#define sockaddr_native sockaddr_in
#define sn_family sin_family
-
-void sockaddr_to_irc(const struct sockaddr_in *v4, struct irc_sockaddr *irc)
-{
- assert(v4->sin_family == AF_INET);
- memset(&irc->addr, 0, 6*sizeof(irc->addr.in6_16[0]));
- memcpy(&irc->addr.in6_16[6], &v4->sin_addr, sizeof(v4->sin_addr));
- irc->port = ntohs(v4->sin_port);
-}
+#define sockaddr_to_irc sockaddr_in_to_irc
int sockaddr_from_irc(struct sockaddr_in *v4, const struct irc_sockaddr *irc, int compat_fd)
{