diff options
author | Andrew Yourtchenko <ayourtch@gmail.com> | 2015-06-24 02:07:06 +0200 |
---|---|---|
committer | Andrew Yourtchenko <ayourtch@gmail.com> | 2015-06-24 02:07:06 +0200 |
commit | 21ee21cc2374bef7de57932f2eadcd82667022cf (patch) | |
tree | 5ddafb88542056e374da28c7f6abc1bd82fb574b | |
parent | 37f50695eed1059089ea069b263b5fbeaa51ed79 (diff) | |
download | Nim-21ee21cc2374bef7de57932f2eadcd82667022cf.tar.gz |
Return address in pure IPv4 notation by getAddrString if IPv6 address is IPv4-mapped.
-rw-r--r-- | lib/pure/rawsockets.nim | 2 |
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") |