Fix support for IPv4-only hosts.
authorMichael Poole <mdpoole@troilus.org>
Fri, 10 Sep 2004 20:36:37 +0000 (20:36 +0000)
committerMichael Poole <mdpoole@troilus.org>
Fri, 10 Sep 2004 20:36:37 +0000 (20:36 +0000)
git-svn-id: file:///home/klmitch/undernet-ircu/undernet-ircu-svn/ircu2/trunk@1112 c9e4aea6-c8fd-4c43-8297-357d70d61c8c

ChangeLog
ircd/os_generic.c

index fa867899a57d1c4a9dfbf80e904f3b8853addec6..c14883a2b0606c72c27b2d462caf7b7b8d89d61e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2004-09-10  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/os_generic.c (sockaddr_from_irc): Fix IPv4 implementation
+       to use the correct address family and IP offset.
+
 2004-09-10  Michael Poole <mdpoole@troilus.org>
 
        * include/s_conf.h (struct ConfItem): Add origin and origin_name
index 99750a3d32db3f91d0f42787ce08ad2e7ce0a29b..adada4573a6b8381c4682f79e79a4e0f6ba31eb4 100644 (file)
@@ -100,9 +100,9 @@ void sockaddr_to_irc(const struct sockaddr_in *v4, struct irc_sockaddr *irc)
 
 void sockaddr_from_irc(struct sockaddr_in *v4, const struct irc_sockaddr *irc, int persist)
 {
-    v4->sin_family = AF_INET6;
+    v4->sin_family = AF_INET;
     assert(!irc->addr.in6_16[0] && !irc->addr.in6_16[1] && !irc->addr.in6_16[2] && !irc->addr.in6_16[3] && !irc->addr.in6_16[4] && (!irc->addr.in6_16[5] || irc->addr.in6_16[5] == 0xffff));
-    memcpy(&v4->sin_addr, &irc->addr.in6_16[7], sizeof(v4->sin_addr));
+    memcpy(&v4->sin_addr, &irc->addr.in6_16[6], sizeof(v4->sin_addr));
     v4->sin_port = htons(irc->port);
     (void)persist;
 }