Modules

Curl

moduleSource

Available on macOS, Linux, Windows, Wasm

#import "Curl";

Bindings for the system libcurl, the C library for URL transfers (HTTP, SMTP, FTP and many more).

This module is the C API as it stands: curl_easy_init, curl_easy_setopt, curl_easy_perform and the rest keep their C names, arguments and results, with CURLcode and the option enums as Jai enums. Nothing is wrapped, so the C rules apply: a handle from curl_easy_init is released with curl_easy_cleanup, strings handed to libcurl must be NUL-terminated (temp_c_string), curl_global_init runs once per program before the first handle is made, and every transfer function blocks until the transfer is over unless the multi interface is used. Failure is a CURLcode other than .OK, and curl_easy_strerror turns it into text. The libcurl shared library has to be installed on the machine that runs the program; it is not part of the toolchain. Mail is built on this module, and Extensions/Http is the HTTP client that needs no C library.

Example↗
curl_global_init(0);

easy := curl_easy_init();
assert(easy != null);
defer curl_easy_cleanup(easy);

curl_easy_setopt(easy, .URL, temp_c_string("https://example.com/"));
code := curl_easy_perform(easy);

if code != .OK print("transfer failed: %\n", to_string(curl_easy_strerror(code)));

This one is only checked to compile, not run.

Procedures#

curl_easy_unescapeforeign2 overloadsSource
(handle: *CURL, _string: *u8, length: s32, outlength: *s32) -> *u8
(handle: *CURL, _string: *u8, length: s32, outlength: *s32) -> *u8
curl_escapeforeign2 overloadsSource
(_string: *u8, length: s32) -> *u8
(_string: *u8, length: s32) -> *u8
curl_getdateforeign2 overloadsSource
(p: *u8, unused: *time_t) -> time_t
(p: *u8, unused: *time_t) -> time_t
curl_maprintfforeign2 overloadsSource
(format: *u8, __args: ..Any) -> *u8
(format: *u8, __args: ..Any) -> *u8
curl_mfprintfforeign2 overloadsSource
(fd: *FILE, format: *u8, __args: ..Any) -> s32
(fd: *FILE, format: *u8, __args: ..Any) -> s32
curl_mprintfforeign2 overloadsSource
(format: *u8, __args: ..Any) -> s32
(format: *u8, __args: ..Any) -> s32
curl_msnprintfforeign2 overloadsSource
(buffer: *u8, maxlength: u64, format: *u8, __args: ..Any) -> s32
(buffer: *u8, maxlength: u64, format: *u8, __args: ..Any) -> s32
curl_msprintfforeign2 overloadsSource
(buffer: *u8, format: *u8, __args: ..Any) -> s32
(buffer: *u8, format: *u8, __args: ..Any) -> s32
curl_multi_fdsetforeign2 overloadsSource
(multi_handle: *CURLM, read_fd_set: *fd_set, write_fd_set: *fd_set, exc_fd_set: *fd_set, max_fd: *s32) -> CURLMcode
(multi_handle: *CURLM, read_fd_set: *fd_set, write_fd_set: *fd_set, exc_fd_set: *fd_set, max_fd: *s32) -> CURLMcode
curl_strnequalforeign2 overloadsSource
(s1: *u8, s2: *u8, n: u64) -> s32
(s1: *u8, s2: *u8, n: u64) -> s32
curl_unescapeforeign2 overloadsSource
(_string: *u8, length: s32) -> *u8
(_string: *u8, length: s32) -> *u8

Types#

:: enum
NONE
OLDEST
LEAST_RECENTLY_USED
LEAST_TRAFFIC
SLOWEST
CALLBACK
LAST
:: enum
LONG
VALUES
OFF_T
OBJECT
STRING
SLIST
CBPTR
BLOB
FUNCTION
curl_fileinfostructforeignSource
:: struct
filename: *u8
filetype: curlfiletype
time: time_t
perm: u32
uid: s32
gid: s32
hardlinks: s64
strings: struct { time: *u8; perm: *u8; user: *u8; group: *u8; target: *u8; }
flags: u32
b_data: *u8
b_size: u64
b_used: u64
curl_headerstructforeignSource
:: struct
name: *u8
value: *u8
amount: u64
index: u64
origin: u32
anchor: *void
:: struct
name: *u8
namelen: u64
includeSubDomains: u8
expire: [18] u8
:: enum
TEXT
HEADER_IN
HEADER_OUT
DATA_IN
DATA_OUT
SSL_DATA_IN
SSL_DATA_OUT
END
:: enum
FINE_ADD_TO_FILE
FINE
REJECT
DEFER
FINE_REPLACE
LAST
:: enum
HTTP
HTTP_1_0
HTTPS
HTTPS2
SOCKS4
SOCKS5
SOCKS4A
SOCKS5_HOSTNAME
:: enum
NONE
OPTIONS
DESCRIBE
ANNOUNCE
SETUP
PLAY
PAUSE
TEARDOWN
GET_PARAMETER
SET_PARAMETER
RECORD
RECEIVE
LAST
curl_sockaddrstructforeignSource
:: struct
family: s32
socktype: s32
protocol: s32
addrlen: u32
addr: sockaddr
:: enum
NONE
OPENSSL
GNUTLS
NSS
OBSOLETE4
GSKIT
POLARSSL
WOLFSSL
SCHANNEL
SECURETRANSPORT
AXTLS
MBEDTLS
MESALINK
BEARSSL
RUSTLS
:: enum
DEFAULT
TLSv1
SSLv2
SSLv3
TLSv1_0
TLSv1_1
TLSv1_2
TLSv1_3
LAST
:: struct
version: *u8
version_num: u32
host: *u8
features: s32
ssl_version: *u8
ssl_version_num: s64
libz_version: *u8
protocols: **u8
ares: *u8
ares_num: s32
libidn: *u8
iconv_ver_num: s32
libssh_version: *u8
brotli_ver_num: u32
brotli_version: *u8
nghttp2_ver_num: u32
nghttp2_version: *u8
quic_version: *u8
cainfo: *u8
capath: *u8
zstd_ver_num: u32
zstd_version: *u8
hyper_version: *u8
gsasl_version: *u8
feature_names: **u8
CURLcodeenumforeignSource
:: enum
OK
UNSUPPORTED_PROTOCOL
FAILED_INIT
URL_MALFORMAT
NOT_BUILT_IN
COULDNT_RESOLVE_PROXY
COULDNT_RESOLVE_HOST
COULDNT_CONNECT
WEIRD_SERVER_REPLY
REMOTE_ACCESS_DENIED
FTP_ACCEPT_FAILED
FTP_WEIRD_PASS_REPLY
FTP_ACCEPT_TIMEOUT
FTP_WEIRD_PASV_REPLY
FTP_WEIRD_227_FORMAT
FTP_CANT_GET_HOST
HTTP2
FTP_COULDNT_SET_TYPE
PARTIAL_FILE
FTP_COULDNT_RETR_FILE
OBSOLETE20
QUOTE_ERROR
HTTP_RETURNED_ERROR
WRITE_ERROR
OBSOLETE24
UPLOAD_FAILED
READ_ERROR
OUT_OF_MEMORY
OPERATION_TIMEDOUT
OBSOLETE29
FTP_PORT_FAILED
FTP_COULDNT_USE_REST
OBSOLETE32
RANGE_ERROR
HTTP_POST_ERROR
SSL_CONNECT_ERROR
BAD_DOWNLOAD_RESUME
FILE_COULDNT_READ_FILE
LDAP_CANNOT_BIND
LDAP_SEARCH_FAILED
OBSOLETE40
FUNCTION_NOT_FOUND
ABORTED_BY_CALLBACK
BAD_FUNCTION_ARGUMENT
OBSOLETE44
INTERFACE_FAILED
OBSOLETE46
TOO_MANY_REDIRECTS
UNKNOWN_OPTION
SETOPT_OPTION_SYNTAX
OBSOLETE50
OBSOLETE51
GOT_NOTHING
SSL_ENGINE_NOTFOUND
SSL_ENGINE_SETFAILED
SEND_ERROR
RECV_ERROR
OBSOLETE57
SSL_CERTPROBLEM
SSL_CIPHER
PEER_FAILED_VERIFICATION
BAD_CONTENT_ENCODING
OBSOLETE62
FILESIZE_EXCEEDED
USE_SSL_FAILED
SEND_FAIL_REWIND
SSL_ENGINE_INITFAILED
LOGIN_DENIED
TFTP_NOTFOUND
TFTP_PERM
REMOTE_DISK_FULL
TFTP_ILLEGAL
TFTP_UNKNOWNID
REMOTE_FILE_EXISTS
TFTP_NOSUCHUSER
OBSOLETE75
OBSOLETE76
SSL_CACERT_BADFILE
REMOTE_FILE_NOT_FOUND
SSH
SSL_SHUTDOWN_FAILED
AGAIN
SSL_CRL_BADFILE
SSL_ISSUER_ERROR
FTP_PRET_FAILED
RTSP_CSEQ_ERROR
RTSP_SESSION_ERROR
FTP_BAD_FILE_LIST
CHUNK_FAILED
NO_CONNECTION_AVAILABLE
SSL_PINNEDPUBKEYNOTMATCH
SSL_INVALIDCERTSTATUS
HTTP2_STREAM
RECURSIVE_API_CALL
AUTH_ERROR
HTTP3
QUIC_CONNECT_ERROR
PROXY
SSL_CLIENTCERT
UNRECOVERABLE_POLL
CURL_LAST
:: enum
FILE
DIRECTORY
SYMLINK
DEVICE_BLOCK
DEVICE_CHAR
NAMEDPIPE
SOCKET
DOOR
UNKNOWN
:: enum
OK
MEMORY
OPTION_TWICE
NULL
UNKNOWN_OPTION
INCOMPLETE
ILLEGAL_ARRAY
DISABLED
LAST
:: enum
NOTHING
COPYNAME
PTRNAME
NAMELENGTH
COPYCONTENTS
PTRCONTENTS
CONTENTSLENGTH
FILECONTENT
ARRAY
OBSOLETE
FILE
BUFFER
BUFFERPTR
BUFFERLENGTH
CONTENTTYPE
CONTENTHEADER
FILENAME
END
OBSOLETE2
STREAM
CONTENTLEN
LASTENTRY
CURLHcodeenumforeignSource
:: enum
OK
BADINDEX
MISSING
NOHEADERS
NOREQUEST
OUT_OF_MEMORY
BAD_ARGUMENT
NOT_BUILT_IN
CURLINFOenumforeignSource
:: enum
NONE
EFFECTIVE_URL
RESPONSE_CODE
TOTAL_TIME
NAMELOOKUP_TIME
CONNECT_TIME
PRETRANSFER_TIME
SIZE_UPLOAD
SIZE_UPLOAD_T
SIZE_DOWNLOAD
SIZE_DOWNLOAD_T
SPEED_DOWNLOAD
SPEED_DOWNLOAD_T
SPEED_UPLOAD
SPEED_UPLOAD_T
HEADER_SIZE
REQUEST_SIZE
SSL_VERIFYRESULT
FILETIME
FILETIME_T
CONTENT_LENGTH_DOWNLOAD
CONTENT_LENGTH_DOWNLOAD_T
CONTENT_LENGTH_UPLOAD
CONTENT_LENGTH_UPLOAD_T
STARTTRANSFER_TIME
CONTENT_TYPE
REDIRECT_TIME
REDIRECT_COUNT
PRIVATE
HTTP_CONNECTCODE
HTTPAUTH_AVAIL
PROXYAUTH_AVAIL
OS_ERRNO
NUM_CONNECTS
SSL_ENGINES
COOKIELIST
LASTSOCKET
FTP_ENTRY_PATH
REDIRECT_URL
PRIMARY_IP
APPCONNECT_TIME
CERTINFO
CONDITION_UNMET
RTSP_SESSION_ID
RTSP_CLIENT_CSEQ
RTSP_SERVER_CSEQ
RTSP_CSEQ_RECV
PRIMARY_PORT
LOCAL_IP
LOCAL_PORT
TLS_SESSION
ACTIVESOCKET
TLS_SSL_PTR
HTTP_VERSION
PROXY_SSL_VERIFYRESULT
PROTOCOL
SCHEME
TOTAL_TIME_T
NAMELOOKUP_TIME_T
CONNECT_TIME_T
PRETRANSFER_TIME_T
STARTTRANSFER_TIME_T
REDIRECT_TIME_T
APPCONNECT_TIME_T
RETRY_AFTER
EFFECTIVE_METHOD
PROXY_ERROR
REFERER
CAINFO
CAPATH
XFER_ID
CONN_ID
LASTONE
CURLMcodeenumforeignSource
:: enum
CALL_MULTI_PERFORM
OK
BAD_HANDLE
BAD_EASY_HANDLE
OUT_OF_MEMORY
INTERNAL_ERROR
BAD_SOCKET
UNKNOWN_OPTION
ADDED_ALREADY
RECURSIVE_API_CALL
WAKEUP_FAILURE
BAD_FUNCTION_ARGUMENT
ABORTED_BY_CALLBACK
UNRECOVERABLE_POLL
LAST
:: enum
SOCKETFUNCTION
SOCKETDATA
PIPELINING
TIMERFUNCTION
TIMERDATA
MAXCONNECTS
MAX_HOST_CONNECTIONS
MAX_PIPELINE_LENGTH
CONTENT_LENGTH_PENALTY_SIZE
CHUNK_LENGTH_PENALTY_SIZE
PIPELINING_SITE_BL
PIPELINING_SERVER_BL
MAX_TOTAL_CONNECTIONS
PUSHFUNCTION
PUSHDATA
MAX_CONCURRENT_STREAMS
LASTENTRY
CURLoptionenumforeignSource
:: enum
WRITEDATA
URL
PORT
PROXY
USERPWD
PROXYUSERPWD
RANGE
READDATA
ERRORBUFFER
WRITEFUNCTION
READFUNCTION
TIMEOUT
INFILESIZE
POSTFIELDS
REFERER
FTPPORT
USERAGENT
LOW_SPEED_LIMIT
LOW_SPEED_TIME
RESUME_FROM
COOKIE
HTTPHEADER
HTTPPOST
SSLCERT
KEYPASSWD
CRLF
QUOTE
HEADERDATA
COOKIEFILE
SSLVERSION
TIMECONDITION
TIMEVALUE
CUSTOMREQUEST
STDERR
POSTQUOTE
OBSOLETE40
VERBOSE
HEADER
NOPROGRESS
NOBODY
FAILONERROR
UPLOAD
POST
DIRLISTONLY
APPEND
NETRC
FOLLOWLOCATION
TRANSFERTEXT
PUT
PROGRESSFUNCTION
XFERINFODATA
AUTOREFERER
PROXYPORT
POSTFIELDSIZE
HTTPPROXYTUNNEL
INTERFACE
KRBLEVEL
SSL_VERIFYPEER
CAINFO
MAXREDIRS
FILETIME
TELNETOPTIONS
MAXCONNECTS
OBSOLETE72
FRESH_CONNECT
FORBID_REUSE
RANDOM_FILE
EGDSOCKET
CONNECTTIMEOUT
HEADERFUNCTION
HTTPGET
SSL_VERIFYHOST
COOKIEJAR
SSL_CIPHER_LIST
HTTP_VERSION
FTP_USE_EPSV
SSLCERTTYPE
SSLKEY
SSLKEYTYPE
SSLENGINE
SSLENGINE_DEFAULT
DNS_USE_GLOBAL_CACHE
DNS_CACHE_TIMEOUT
PREQUOTE
DEBUGFUNCTION
DEBUGDATA
COOKIESESSION
CAPATH
BUFFERSIZE
NOSIGNAL
SHARE
PROXYTYPE
ACCEPT_ENCODING
PRIVATE
HTTP200ALIASES
UNRESTRICTED_AUTH
FTP_USE_EPRT
HTTPAUTH
SSL_CTX_FUNCTION
SSL_CTX_DATA
FTP_CREATE_MISSING_DIRS
PROXYAUTH
SERVER_RESPONSE_TIMEOUT
IPRESOLVE
MAXFILESIZE
INFILESIZE_LARGE
RESUME_FROM_LARGE
MAXFILESIZE_LARGE
NETRC_FILE
USE_SSL
POSTFIELDSIZE_LARGE
TCP_NODELAY
FTPSSLAUTH
IOCTLFUNCTION
IOCTLDATA
FTP_ACCOUNT
COOKIELIST
IGNORE_CONTENT_LENGTH
FTP_SKIP_PASV_IP
FTP_FILEMETHOD
LOCALPORT
LOCALPORTRANGE
CONNECT_ONLY
CONV_FROM_NETWORK_FUNCTION
CONV_TO_NETWORK_FUNCTION
CONV_FROM_UTF8_FUNCTION
MAX_SEND_SPEED_LARGE
MAX_RECV_SPEED_LARGE
FTP_ALTERNATIVE_TO_USER
SOCKOPTFUNCTION
SOCKOPTDATA
SSL_SESSIONID_CACHE
SSH_AUTH_TYPES
SSH_PUBLIC_KEYFILE
SSH_PRIVATE_KEYFILE
FTP_SSL_CCC
TIMEOUT_MS
CONNECTTIMEOUT_MS
HTTP_TRANSFER_DECODING
HTTP_CONTENT_DECODING
NEW_FILE_PERMS
NEW_DIRECTORY_PERMS
POSTREDIR
SSH_HOST_PUBLIC_KEY_MD5
OPENSOCKETFUNCTION
OPENSOCKETDATA
COPYPOSTFIELDS
PROXY_TRANSFER_MODE
SEEKFUNCTION
SEEKDATA
CRLFILE
ISSUERCERT
ADDRESS_SCOPE
CERTINFO
USERNAME
PASSWORD
PROXYUSERNAME
PROXYPASSWORD
NOPROXY
TFTP_BLKSIZE
SOCKS5_GSSAPI_SERVICE
SOCKS5_GSSAPI_NEC
PROTOCOLS
REDIR_PROTOCOLS
SSH_KNOWNHOSTS
SSH_KEYFUNCTION
SSH_KEYDATA
MAIL_FROM
MAIL_RCPT
FTP_USE_PRET
RTSP_REQUEST
RTSP_SESSION_ID
RTSP_STREAM_URI
RTSP_TRANSPORT
RTSP_CLIENT_CSEQ
RTSP_SERVER_CSEQ
INTERLEAVEDATA
INTERLEAVEFUNCTION
WILDCARDMATCH
CHUNK_BGN_FUNCTION
CHUNK_END_FUNCTION
FNMATCH_FUNCTION
CHUNK_DATA
FNMATCH_DATA
RESOLVE
TLSAUTH_USERNAME
TLSAUTH_PASSWORD
TLSAUTH_TYPE
TRANSFER_ENCODING
CLOSESOCKETFUNCTION
CLOSESOCKETDATA
GSSAPI_DELEGATION
DNS_SERVERS
ACCEPTTIMEOUT_MS
TCP_KEEPALIVE
TCP_KEEPIDLE
TCP_KEEPINTVL
SSL_OPTIONS
MAIL_AUTH
SASL_IR
XFERINFOFUNCTION
XOAUTH2_BEARER
DNS_INTERFACE
DNS_LOCAL_IP4
DNS_LOCAL_IP6
LOGIN_OPTIONS
SSL_ENABLE_NPN
SSL_ENABLE_ALPN
EXPECT_100_TIMEOUT_MS
PROXYHEADER
HEADEROPT
PINNEDPUBLICKEY
UNIX_SOCKET_PATH
SSL_VERIFYSTATUS
SSL_FALSESTART
PATH_AS_IS
PROXY_SERVICE_NAME
SERVICE_NAME
PIPEWAIT
DEFAULT_PROTOCOL
STREAM_WEIGHT
STREAM_DEPENDS
STREAM_DEPENDS_E
TFTP_NO_OPTIONS
CONNECT_TO
TCP_FASTOPEN
KEEP_SENDING_ON_ERROR
PROXY_CAINFO
PROXY_CAPATH
PROXY_SSL_VERIFYPEER
PROXY_SSL_VERIFYHOST
PROXY_SSLVERSION
PROXY_TLSAUTH_USERNAME
PROXY_TLSAUTH_PASSWORD
PROXY_TLSAUTH_TYPE
PROXY_SSLCERT
PROXY_SSLCERTTYPE
PROXY_SSLKEY
PROXY_SSLKEYTYPE
PROXY_KEYPASSWD
PROXY_SSL_CIPHER_LIST
PROXY_CRLFILE
PROXY_SSL_OPTIONS
PRE_PROXY
PROXY_PINNEDPUBLICKEY
ABSTRACT_UNIX_SOCKET
SUPPRESS_CONNECT_HEADERS
REQUEST_TARGET
SOCKS5_AUTH
SSH_COMPRESSION
MIMEPOST
TIMEVALUE_LARGE
HAPPY_EYEBALLS_TIMEOUT_MS
RESOLVER_START_FUNCTION
RESOLVER_START_DATA
HAPROXYPROTOCOL
DNS_SHUFFLE_ADDRESSES
TLS13_CIPHERS
PROXY_TLS13_CIPHERS
DISALLOW_USERNAME_IN_URL
DOH_URL
UPLOAD_BUFFERSIZE
UPKEEP_INTERVAL_MS
CURLU
TRAILERFUNCTION
TRAILERDATA
HTTP09_ALLOWED
ALTSVC_CTRL
ALTSVC
MAXAGE_CONN
SASL_AUTHZID
MAIL_RCPT_ALLOWFAILS
SSLCERT_BLOB
SSLKEY_BLOB
PROXY_SSLCERT_BLOB
PROXY_SSLKEY_BLOB
ISSUERCERT_BLOB
PROXY_ISSUERCERT
PROXY_ISSUERCERT_BLOB
SSL_EC_CURVES
HSTS_CTRL
HSTS
HSTSREADFUNCTION
HSTSREADDATA
HSTSWRITEFUNCTION
HSTSWRITEDATA
AWS_SIGV4
DOH_SSL_VERIFYPEER
DOH_SSL_VERIFYHOST
DOH_SSL_VERIFYSTATUS
CAINFO_BLOB
PROXY_CAINFO_BLOB
SSH_HOST_PUBLIC_KEY_SHA256
PREREQFUNCTION
PREREQDATA
MAXLIFETIME_CONN
MIME_OPTIONS
SSH_HOSTKEYFUNCTION
SSH_HOSTKEYDATA
PROTOCOLS_STR
REDIR_PROTOCOLS_STR
WS_OPTIONS
CA_CACHE_TIMEOUT
QUICK_EXIT
HAPROXY_CLIENT_IP
LASTENTRY
:: enum
OK
BAD_ADDRESS_TYPE
BAD_VERSION
CLOSED
GSSAPI
GSSAPI_PERMSG
GSSAPI_PROTECTION
IDENTD
IDENTD_DIFFER
LONG_HOSTNAME
LONG_PASSWD
LONG_USER
NO_AUTH
RECV_ADDRESS
RECV_AUTH
RECV_CONNECT
RECV_REQACK
REPLY_ADDRESS_TYPE_NOT_SUPPORTED
REPLY_COMMAND_NOT_SUPPORTED
REPLY_CONNECTION_REFUSED
REPLY_GENERAL_SERVER_FAILURE
REPLY_HOST_UNREACHABLE
REPLY_NETWORK_UNREACHABLE
REPLY_NOT_ALLOWED
REPLY_TTL_EXPIRED
REPLY_UNASSIGNED
REQUEST_FAILED
RESOLVE_HOST
SEND_AUTH
SEND_CONNECT
SEND_REQUEST
UNKNOWN_FAIL
UNKNOWN_MODE
USER_REJECTED
LAST
CURLSHcodeenumforeignSource
:: enum
OK
BAD_OPTION
IN_USE
INVALID
NOMEM
NOT_BUILT_IN
LAST
:: enum
NONE
SHARE
UNSHARE
LOCKFUNC
UNLOCKFUNC
USERDATA
LAST
CURLUcodeenumforeignSource
:: enum
OK
BAD_HANDLE
BAD_PARTPOINTER
MALFORMED_INPUT
BAD_PORT_NUMBER
UNSUPPORTED_SCHEME
URLDECODE
OUT_OF_MEMORY
USER_NOT_ALLOWED
UNKNOWN_PART
NO_SCHEME
NO_USER
NO_PASSWORD
NO_OPTIONS
NO_HOST
NO_PORT
NO_QUERY
NO_FRAGMENT
NO_ZONEID
BAD_FILE_URL
BAD_FRAGMENT
BAD_HOSTNAME
BAD_IPV6
BAD_LOGIN
BAD_PASSWORD
BAD_PATH
BAD_QUERY
BAD_SCHEME
BAD_SLASHES
BAD_USER
LACKS_IDN
LAST
CURLUPartenumforeignSource
:: enum
URL
SCHEME
USER
PASSWORD
OPTIONS
HOST
PORT
PATH
QUERY
FRAGMENT
ZONEID
:: enum
FIRST
SECOND
THIRD
FOURTH
FIFTH
SIXTH
SEVENTH
EIGHTH
NINTH
TENTH
ELEVENTH
LAST
:: #type (clientp: *void, conn_primary_ip: *u8, conn_local_ip: *u8, conn_primary_port: s32, conn_local_port: s32) -> s32 #c_call
:: #type (clientp: *void, dltotal: float64, dlnow: float64, ultotal: float64, ulnow: float64) -> s32 #c_call

Constants#