diff options
author | Dominik Picheta <dominikpicheta@googlemail.com> | 2015-09-15 10:37:16 +0100 |
---|---|---|
committer | Dominik Picheta <dominikpicheta@googlemail.com> | 2015-09-15 10:37:16 +0100 |
commit | 4da5e474148db9298ec0d730046544278d7e6827 (patch) | |
tree | 50c27ed7aef949b3e089423874a5bb2a122696b1 | |
parent | 01c99ff258dfb223e95c5733f62ad7beb2ab5f4d (diff) | |
download | Nim-4da5e474148db9298ec0d730046544278d7e6827.tar.gz |
Implements getPeerAddr/getPeerName on Windows and adds IDX.
-rw-r--r-- | lib/pure/net.nim | 8 | ||||
-rw-r--r-- | lib/pure/rawsockets.nim | 4 | ||||
-rw-r--r-- | lib/windows/winlean.nim | 8 |
3 files changed, 17 insertions, 3 deletions
diff --git a/lib/pure/net.nim b/lib/pure/net.nim index b7a40121f..0ce5b4d25 100644 --- a/lib/pure/net.nim +++ b/lib/pure/net.nim @@ -534,11 +534,15 @@ proc getSockOpt*(socket: Socket, opt: SOBool, level = SOL_SOCKET): bool {. result = res != 0 proc getLocalAddr*(socket: Socket): (string, Port) = - ## Get the socket's local address and port number + ## Get the socket's local address and port number. + ## + ## This is high-level interface for `getsockname`:idx:. getLocalAddr(socket.fd, socket.domain) proc getPeerAddr*(socket: Socket): (string, Port) = - ## Get the socket's peer address and port number + ## Get the socket's peer address and port number. + ## + ## This is high-level interface for `getpeername`:idx:. getPeerAddr(socket.fd, socket.domain) proc setSockOpt*(socket: Socket, opt: SOBool, value: bool, level = SOL_SOCKET) {. diff --git a/lib/pure/rawsockets.nim b/lib/pure/rawsockets.nim index 0a69b580e..f5860ef28 100644 --- a/lib/pure/rawsockets.nim +++ b/lib/pure/rawsockets.nim @@ -373,6 +373,8 @@ proc getSockName*(socket: SocketHandle): Port = proc getLocalAddr*(socket: SocketHandle, domain: Domain): (string, Port) = ## returns the socket's local address and port number. + ## + ## Similar to POSIX's `getsockname`:idx:. case domain of AF_INET: var name: Sockaddr_in @@ -406,6 +408,8 @@ proc getLocalAddr*(socket: SocketHandle, domain: Domain): (string, Port) = proc getPeerAddr*(socket: SocketHandle, domain: Domain): (string, Port) = ## returns the socket's peer address and port number. + ## + ## Similar to POSIX's `getpeername`:idx: case domain of AF_INET: var name: Sockaddr_in diff --git a/lib/windows/winlean.nim b/lib/windows/winlean.nim index 24015dd3a..84dac6d79 100644 --- a/lib/windows/winlean.nim +++ b/lib/windows/winlean.nim @@ -409,7 +409,7 @@ type bytes*: array[0..15, char] Sockaddr_in6* {.importc: "SOCKADDR_IN6", - header: "winsock2.h".} = object + header: "ws2tcpip.h".} = object sin6_family*: int16 sin6_port*: int16 # unsigned sin6_flowinfo*: int32 # unsigned @@ -511,6 +511,9 @@ proc connect*(s: SocketHandle, name: ptr SockAddr, namelen: SockLen): cint {. proc getsockname*(s: SocketHandle, name: ptr SockAddr, namelen: ptr SockLen): cint {. stdcall, importc: "getsockname", dynlib: ws2dll.} +proc getpeername*(s: SocketHandle, name: ptr SockAddr, + namelen: ptr SockLen): cint {. + stdcall, importc, dynlib: ws2dll.} proc getsockopt*(s: SocketHandle, level, optname: cint, optval: pointer, optlen: ptr SockLen): cint {. stdcall, importc: "getsockopt", dynlib: ws2dll.} @@ -572,6 +575,9 @@ proc freeaddrinfo*(ai: ptr AddrInfo) {. proc inet_ntoa*(i: InAddr): cstring {. stdcall, importc, dynlib: ws2dll.} +proc inet_ntop*(family: cint, paddr: pointer, pStringBuffer: cstring, + stringBufSize: int32): cstring {.stdcall, importc, dynlib: ws2dll.} + const MAXIMUM_WAIT_OBJECTS* = 0x00000040 |