From 48ff0d84d0719045d0d5fd907ff11789ce82dd10 Mon Sep 17 00:00:00 2001 From: Andrew Yourtchenko Date: Wed, 24 Jun 2015 01:37:57 +0200 Subject: Add getAddrString which returns string representing the address within SockAddr. --- lib/pure/rawsockets.nim | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'lib/pure') 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 -- cgit 1.4.1-2-gfad0