add getprotobyname (#15273)
* add getprotobyname * tests, docs, changelog * add since
This commit is contained in:
parent
7d4f0df107
commit
8c82144ba5
4 changed files with 56 additions and 0 deletions
|
|
@ -13,6 +13,8 @@
|
|||
# TODO: Clean up the exports a bit and everything else in general.
|
||||
|
||||
import os, options
|
||||
import std/private/since
|
||||
|
||||
|
||||
when hostOS == "solaris":
|
||||
{.passl: "-lsocket -lnsl".}
|
||||
|
|
@ -199,6 +201,18 @@ proc toSockType*(protocol: Protocol): SockType =
|
|||
of IPPROTO_IP, IPPROTO_IPV6, IPPROTO_RAW, IPPROTO_ICMP, IPPROTO_ICMPV6:
|
||||
SOCK_RAW
|
||||
|
||||
proc getProtoByName*(name: string): int {.since: (1, 3, 5).} =
|
||||
## Returns a protocol code from the database that matches the protocol ``name``.
|
||||
when useWinVersion:
|
||||
let protoent = winlean.getprotobyname(name.cstring)
|
||||
else:
|
||||
let protoent = posix.getprotobyname(name.cstring)
|
||||
|
||||
if protoent == nil:
|
||||
raise newException(OsError, "protocol not found")
|
||||
|
||||
result = protoent.p_proto.int
|
||||
|
||||
proc close*(socket: SocketHandle) =
|
||||
## Closes a socket.
|
||||
when useWinVersion:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue