summaryrefslogtreecommitdiffstats
path: root/freebsd/sys/kern/uipc_syscalls.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2013-10-14 13:09:15 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2013-10-31 13:18:48 +0100
commit0beab1e86a5a4e195f5beeb927b6f5a616208667 (patch)
treec72cdd595ce7f0c187ee1d5c11c6bf5cc6d179a8 /freebsd/sys/kern/uipc_syscalls.c
parentUse getsockopt() and setsockopt() from FreeBSD (diff)
downloadrtems-libbsd-0beab1e86a5a4e195f5beeb927b6f5a616208667.tar.bz2
Use getpeername() from FreeBSD
Diffstat (limited to 'freebsd/sys/kern/uipc_syscalls.c')
-rw-r--r--freebsd/sys/kern/uipc_syscalls.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/freebsd/sys/kern/uipc_syscalls.c b/freebsd/sys/kern/uipc_syscalls.c
index 7377c7f4..249bc2b7 100644
--- a/freebsd/sys/kern/uipc_syscalls.c
+++ b/freebsd/sys/kern/uipc_syscalls.c
@@ -1799,7 +1799,13 @@ ogetsockname(td, uap)
return (getsockname1(td, uap, 1));
}
#endif /* COMPAT_OLDSOCK */
+#endif /* __rtems__ */
+#ifdef __rtems__
+static int
+kern_getpeername(struct thread *td, int fd, struct sockaddr **sa,
+ socklen_t *alen);
+#endif /* __rtems__ */
/*
* getpeername1() - Get name of peer for connected socket.
*/
@@ -1838,6 +1844,28 @@ getpeername1(td, uap, compat)
error = copyout(&len, uap->alen, sizeof(len));
return (error);
}
+#ifdef __rtems__
+int
+getpeername(int socket, struct sockaddr *__restrict address,
+ socklen_t *__restrict address_len)
+{
+ struct thread *td = rtems_bsd_get_curthread_or_null();
+ struct getpeername_args ua = {
+ .fdes = socket,
+ .asa = address,
+ .alen = address_len
+ };
+ int error;
+
+ if (td != NULL) {
+ error = getpeername1(td, &ua);
+ } else {
+ error = ENOMEM;
+ }
+
+ return rtems_bsd_error_to_status_and_errno(error);
+}
+#endif /* __rtems__ */
int
kern_getpeername(struct thread *td, int fd, struct sockaddr **sa,
@@ -1885,6 +1913,7 @@ done:
return (error);
}
+#ifndef __rtems__
int
getpeername(td, uap)
struct thread *td;