summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAndrew Yourtchenko <ayourtch@gmail.com>2015-06-24 02:07:06 +0200
committerAndrew Yourtchenko <ayourtch@gmail.com>2015-06-24 02:07:06 +0200
commit21ee21cc2374bef7de57932f2eadcd82667022cf (patch)
tree5ddafb88542056e374da28c7f6abc1bd82fb574b
parent37f50695eed1059089ea069b263b5fbeaa51ed79 (diff)
downloadNim-21ee21cc2374bef7de57932f2eadcd82667022cf.tar.gz
Return address in pure IPv4 notation by getAddrString if IPv6 address is IPv4-mapped.
-rw-r--r--lib/pure/rawsockets.nim2
1 files changed, 2 insertions, 0 deletions
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")