version 1.120, 2002/05/23 19:24:30 |
version 1.121, 2002/06/08 21:15:27 |
|
|
static const char * |
static const char * |
sockaddr_ntop(struct sockaddr *sa) |
sockaddr_ntop(struct sockaddr *sa) |
{ |
{ |
void *addr; |
static char addrbuf[NI_MAXHOST]; |
static char addrbuf[INET6_ADDRSTRLEN]; |
|
|
|
switch (sa->sa_family) { |
if (getnameinfo(sa, sa->sa_len, addrbuf, sizeof(addrbuf), NULL, 0, |
case AF_INET: |
NI_NUMERICHOST) != 0) |
addr = &((struct sockaddr_in *)sa)->sin_addr; |
|
break; |
|
case AF_INET6: |
|
addr = &((struct sockaddr_in6 *)sa)->sin6_addr; |
|
break; |
|
default: |
|
/* This case should be protected against elsewhere */ |
|
abort(); /* XXX abort is bad -- do something else */ |
abort(); /* XXX abort is bad -- do something else */ |
} |
|
inet_ntop(sa->sa_family, addr, addrbuf, sizeof(addrbuf)); |
|
return addrbuf; |
return addrbuf; |
} |
} |
|
|