From 807ecb11a610ddbe9c4a22c0068d8af825fa0672 Mon Sep 17 00:00:00 2001
From: Guy Zana <guy@cloudius-systems.com>
Date: Sun, 28 Apr 2013 13:08:25 +0300
Subject: [PATCH] net: implement socketpair()

---
 bsd/sys/kern/uipc_syscalls_wrap.c | 13 +++++++++++++
 bsd/uipc_syscalls.h               |  1 +
 2 files changed, 14 insertions(+)

diff --git a/bsd/sys/kern/uipc_syscalls_wrap.c b/bsd/sys/kern/uipc_syscalls_wrap.c
index e94d8d12c..8f50ec85c 100644
--- a/bsd/sys/kern/uipc_syscalls_wrap.c
+++ b/bsd/sys/kern/uipc_syscalls_wrap.c
@@ -7,6 +7,19 @@
 
 #include "libc.h"
 
+int socketpair(int domain, int type, int protocol, int sv[2])
+{
+	int error;
+
+	error = linux_socketpair(domain, type, protocol, sv);
+	if (error) {
+		errno = error;
+		return -1;
+	}
+
+	return 0;
+}
+
 
 int accept4(int fd, struct sockaddr *restrict addr, socklen_t *restrict len, int flg)
 {
diff --git a/bsd/uipc_syscalls.h b/bsd/uipc_syscalls.h
index 59b1d2299..111c80bf7 100644
--- a/bsd/uipc_syscalls.h
+++ b/bsd/uipc_syscalls.h
@@ -53,5 +53,6 @@ int linux_recvfrom(int s, void* buf, size_t len, int flags,
 int linux_shutdown(int s, int how);
 int linux_setsockopt(int s, int level, int name, caddr_t val, int valsize);
 int linux_getsockopt(int s, int level, int name, void *val, socklen_t *valsize);
+int linux_socketpair(int domain, int type, int protocol, int* rsv);
 
 #endif /* !UIPC_SYSCALLS_H */
-- 
GitLab