From 4cca20037aa71f7583ff6180687d29dceea9ebaa Mon Sep 17 00:00:00 2001 From: Michael Poole Date: Thu, 6 Apr 2006 02:19:47 +0000 Subject: [PATCH] Fix some IPv6 address compatibility issues. src/proto-p10.c (irc_p10_pton): Mark valid IPv4 addresses as v4-mapped. (irc_p10_ntop): Emit invalid IPs as AAAAAA (but it could be _ for +6 flagged hubs). git-archimport-id: srvx@srvx.net--2006/srvx--devo--1.3--patch-11 --- ChangeLog | 15 +++++++++++++++ src/proto-p10.c | 6 +++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 6185dc8..9f4add7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,21 @@ # arch-tag: automatic-ChangeLog--srvx@srvx.net--2006/srvx--devo--1.3 # +2006-04-06 02:19:47 GMT Michael Poole patch-11 + + Summary: + Fix some IPv6 address compatibility issues. + Revision: + srvx--devo--1.3--patch-11 + + src/proto-p10.c (irc_p10_pton): Mark valid IPv4 addresses as v4-mapped. + (irc_p10_ntop): Emit invalid IPs as AAAAAA (but it could be _ for +6 + flagged hubs). + + modified files: + ChangeLog src/proto-p10.c + + 2006-04-05 02:07:30 GMT Michael Poole patch-10 Summary: diff --git a/src/proto-p10.c b/src/proto-p10.c index d44d8a2..a5d61e4 100644 --- a/src/proto-p10.c +++ b/src/proto-p10.c @@ -383,6 +383,8 @@ irc_p10_pton(irc_in_addr_t *ip, const char *input) unsigned int value; memset(ip, 0, 6 * sizeof(ip->in6[0])); value = base64toint(input, 6); + if (value) + ip->in6[5] = htons(65535); ip->in6[6] = htons(value >> 16); ip->in6[7] = htons(value & 65535); } else { @@ -404,7 +406,9 @@ irc_p10_pton(irc_in_addr_t *ip, const char *input) static void irc_p10_ntop(char *output, const irc_in_addr_t *ip) { - if (irc_in_addr_is_ipv4(*ip)) { + if (!irc_in_addr_is_valid(*ip)) { + strcpy(output, "AAAAAA"); + } else if (irc_in_addr_is_ipv4(*ip)) { unsigned int in4; in4 = (ntohs(ip->in6[6]) << 16) | ntohs(ip->in6[7]); inttobase64(output, in4, 6); -- 2.20.1