+ free freeaddrinfo(*res);
+}
+
+// extern int getnameinfo(struct sockaddr *sa, socklen_t salen, char *host, socklen_t hostlen, char *serv, socklen_t servlen, int flags)
+function psi\getnameinfo(string $addr, string &$host = NULL, string &$service = NULL, int $flags = 0) : int {
+ let sa = strval($addr);
+ let salen = strlen($addr);
+ let hostlen = NI_MAXHOST;
+ let host = calloc(hostlen, sizeof(char));
+ let servlen = NI_MAXSERV;
+ let serv = calloc(servlen, sizeof(char));
+ let flags = intval($flags);
+ return getnameinfo(sa, salen, host, hostlen, serv, servlen, flags) as to_int(getnameinfo);
+ set $host = to_string(host);
+ set $service = to_string(serv);
+}