From: Michael Poole Date: Mon, 9 May 2005 01:55:26 +0000 (+0000) Subject: Use v4compat addresses when !defined(IPV6). X-Git-Url: http://git.pk910.de/?a=commitdiff_plain;h=d0202a7cd10f772a202d41d056a0518bbd3c3d47;p=ircu2.10.12-pk.git Use v4compat addresses when !defined(IPV6). git-svn-id: file:///home/klmitch/undernet-ircu/undernet-ircu-svn/ircu2/trunk@1401 c9e4aea6-c8fd-4c43-8297-357d70d61c8c --- diff --git a/ChangeLog b/ChangeLog index c6b05ad..f9c7817 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-05-08 Jukka Ollila + (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 * ircd/channel.c (joinbuf_join): Be smarter about what source to diff --git a/ircd/os_generic.c b/ircd/os_generic.c index d2f73b6..f215c22 100644 --- a/ircd/os_generic.c +++ b/ircd/os_generic.c @@ -69,6 +69,17 @@ #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 @@ -86,11 +97,7 @@ void sockaddr_to_irc(const struct sockaddr_in6 *v6, struct irc_sockaddr *irc) 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"); } @@ -136,14 +143,7 @@ int sockaddr_from_irc(struct sockaddr_in6 *v6, const struct irc_sockaddr *irc, i #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) {