Use v4compat addresses when !defined(IPV6).
authorMichael Poole <mdpoole@troilus.org>
Mon, 9 May 2005 01:55:26 +0000 (01:55 +0000)
committerMichael Poole <mdpoole@troilus.org>
Mon, 9 May 2005 01:55:26 +0000 (01:55 +0000)
git-svn-id: file:///home/klmitch/undernet-ircu/undernet-ircu-svn/ircu2/trunk@1401 c9e4aea6-c8fd-4c43-8297-357d70d61c8c

ChangeLog
ircd/os_generic.c

index c6b05ad5393d496f3da6782a6fac80ba6702606b..f9c7817d1129e206d5b74409793bd5dfc3b6a884 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+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
index d2f73b6363d4385d3c0dc2cef7d247d2571481f6..f215c22528a75ad439cb2cf095d7ca9e92e11bc6 100644 (file)
 #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)
 {