summaryrefslogtreecommitdiff
path: root/sys/src/ape/lib/bsd/getsockname.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@gmx.de>2013-03-31 18:52:45 +0200
committercinap_lenrek <cinap_lenrek@gmx.de>2013-03-31 18:52:45 +0200
commitb6dc4ba5a44a2ed2a68266598ceb28b7a7d51af2 (patch)
treeb2af773db48a3606bd078055db925dbba6d4ffaa /sys/src/ape/lib/bsd/getsockname.c
parent9c7e1db701e0e80b42bb5990e2f6839d712bb984 (diff)
ape: initial IPv6 support, inet_pton()/inet_ntop(), getaddrinfo()/getnameinfo()
Diffstat (limited to 'sys/src/ape/lib/bsd/getsockname.c')
-rw-r--r--sys/src/ape/lib/bsd/getsockname.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/src/ape/lib/bsd/getsockname.c b/sys/src/ape/lib/bsd/getsockname.c
index aa22d3217..cdf149779 100644
--- a/sys/src/ape/lib/bsd/getsockname.c
+++ b/sys/src/ape/lib/bsd/getsockname.c
@@ -20,7 +20,6 @@ getsockname(int fd, struct sockaddr *addr, int *alen)
{
Rock *r;
int i;
- struct sockaddr_in *lip;
struct sockaddr_un *lunix;
r = _sock_findrock(fd, 0);
@@ -31,14 +30,15 @@ getsockname(int fd, struct sockaddr *addr, int *alen)
switch(r->domain){
case PF_INET:
- lip = (struct sockaddr_in*)addr;
- _sock_ingetaddr(r, lip, alen, "local");
+ case PF_INET6:
+ _sock_ingetaddr(r, addr, alen, "local");
break;
case PF_UNIX:
lunix = (struct sockaddr_un*)&r->addr;
i = &lunix->sun_path[strlen(lunix->sun_path)] - (char*)lunix;
memmove(addr, lunix, i);
- *alen = i;
+ if(alen != 0)
+ *alen = i;
break;
default:
errno = EAFNOSUPPORT;