| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #include "gai_hdr.h"
- /* include getnameinfo */
- int
- getnameinfo(const struct sockaddr *sa, socklen_t salen,
- char *host, size_t hostlen,
- char *serv, size_t servlen, int flags)
- {
- switch (sa->sa_family) {
- #ifdef IPv4
- case AF_INET: {
- struct sockaddr_in *sain = (struct sockaddr_in *) sa;
- return(gn_ipv46(host, hostlen, serv, servlen,
- &sain->sin_addr, sizeof(struct in_addr),
- AF_INET, sain->sin_port, flags));
- }
- #endif
- #ifdef IPv6
- case AF_INET6: {
- struct sockaddr_in6 *sain = (struct sockaddr_in6 *) sa;
- return(gn_ipv46(host, hostlen, serv, servlen,
- &sain->sin6_addr, sizeof(struct in6_addr),
- AF_INET6, sain->sin6_port, flags));
- }
- #endif
- #ifdef UNIXdomain
- case AF_LOCAL: {
- struct sockaddr_un *un = (struct sockaddr_un *) sa;
- if (hostlen > 0)
- snprintf(host, hostlen, "%s", "/local");
- if (servlen > 0)
- snprintf(serv, servlen, "%s", un->sun_path);
- return(0);
- }
- #endif
- default:
- return(1);
- }
- }
- /* end getnameinfo */
|