From 21ee21cc2374bef7de57932f2eadcd82667022cf Mon Sep 17 00:00:00 2001 From: Andrew Yourtchenko Date: Wed, 24 Jun 2015 02:07:06 +0200 Subject: Return address in pure IPv4 notation by getAddrString if IPv6 address is IPv4-mapped. --- lib/pure/rawsockets.nim | 2 ++ 1 file changed, 2 insertions(+) (limited to 'lib') diff --git a/lib/pure/rawsockets.nim b/lib/pure/rawsockets.nim index 12ec50ec6..c97718b0a 100644 --- a/lib/pure/rawsockets.nim +++ b/lib/pure/rawsockets.nim @@ -339,6 +339,8 @@ proc getAddrString*(sockAddr: ptr SockAddr): string = var v6addr = cast[ptr Sockaddr_in6](sockAddr).sin6_addr result = newString(posix.INET6_ADDRSTRLEN) discard posix.inet_ntop(posix.AF_INET6, addr cast[ptr Sockaddr_in6](sockAddr).sin6_addr, result.cstring, result.len.int32) + if posix.IN6_IS_ADDR_V4MAPPED(addr cast[ptr Sockaddr_in6](sockAddr).sin6_addr) != 0: + result = result.substr("::ffff:".len) else: raise newException(OSError, "unknown socket family in getAddrString") -- cgit 1.4.1-2-gfad0