diff options
author | Andrew Yourtchenko <ayourtch@gmail.com> | 2015-06-24 01:37:57 +0200 |
---|---|---|
committer | Andrew Yourtchenko <ayourtch@gmail.com> | 2015-06-24 01:37:57 +0200 |
commit | 48ff0d84d0719045d0d5fd907ff11789ce82dd10 (patch) | |
tree | df65707ec9c50f1e8a2ffa21751eea936c61cc34 /lib/pure | |
parent | 61336b2404c7b09b7ddb73d17426e6b291b15c9c (diff) | |
download | Nim-48ff0d84d0719045d0d5fd907ff11789ce82dd10.tar.gz |
Add getAddrString which returns string representing the address within SockAddr.
Diffstat (limited to 'lib/pure')
-rw-r--r-- | lib/pure/rawsockets.nim | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/pure/rawsockets.nim b/lib/pure/rawsockets.nim index c99f9a7a9..d1922de65 100644 --- a/lib/pure/rawsockets.nim +++ b/lib/pure/rawsockets.nim @@ -330,6 +330,18 @@ proc getSockDomain*(socket: SocketHandle): Domain = raise newException(OSError, "unknown socket family in getSockFamily") +proc getAddrString*(sockAddr: ptr SockAddr): string = + ## return the string representation of address within sockAddr + if sockAddr.sa_family == posix.AF_INET: + result = $inet_ntoa(cast[ptr Sockaddr_in](sockAddr).sin_addr) + elif sockAddr.sa_family == posix.AF_INET6: + 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) + else: + raise newException(OSError, "unknown socket family in getAddrString") + + proc getSockName*(socket: SocketHandle): Port = ## returns the socket's associated port number. var name: Sockaddr_in |