summaryrefslogtreecommitdiffstats
path: root/sys/compat
diff options
context:
space:
mode:
authormini <mini@FreeBSD.org>2002-09-23 06:17:54 +0000
committermini <mini@FreeBSD.org>2002-09-23 06:17:54 +0000
commite206834961edb2d9141a787805ae32d92c3c9877 (patch)
tree5f424fb16ca806384a61af312db97a34a1315a17 /sys/compat
parentbcb38a31ff0d92c47ebc284b3704fa8f94de02ba (diff)
downloadFreeBSD-src-e206834961edb2d9141a787805ae32d92c3c9877.zip
FreeBSD-src-e206834961edb2d9141a787805ae32d92c3c9877.tar.gz
Don't use compatability syscall wrappers in emulation code.
This is needed for the COMPAT_FREEBSD3 option split. Reviewed by: alfred, jake
Diffstat (limited to 'sys/compat')
-rw-r--r--sys/compat/linux/linux_socket.c30
-rw-r--r--sys/compat/linux/linux_sysctl.c21
-rw-r--r--sys/compat/svr4/svr4_stream.c14
3 files changed, 50 insertions, 15 deletions
diff --git a/sys/compat/linux/linux_socket.c b/sys/compat/linux/linux_socket.c
index a3af70f..23b14c9 100644
--- a/sys/compat/linux/linux_socket.c
+++ b/sys/compat/linux/linux_socket.c
@@ -503,7 +503,7 @@ linux_accept(struct thread *td, struct linux_accept_args *args)
bsd_args.s = linux_args.s;
bsd_args.name = (caddr_t)linux_args.addr;
bsd_args.anamelen = linux_args.namelen;
- error = oaccept(td, &bsd_args);
+ error = accept(td, &bsd_args);
if (error)
return (error);
@@ -543,7 +543,7 @@ linux_getsockname(struct thread *td, struct linux_getsockname_args *args)
bsd_args.fdes = linux_args.s;
bsd_args.asa = (caddr_t) linux_args.addr;
bsd_args.alen = linux_args.namelen;
- return (ogetsockname(td, &bsd_args));
+ return (getsockname(td, &bsd_args));
}
struct linux_getpeername_args {
@@ -556,7 +556,7 @@ static int
linux_getpeername(struct thread *td, struct linux_getpeername_args *args)
{
struct linux_getpeername_args linux_args;
- struct ogetpeername_args /* {
+ struct getpeername_args /* {
int fdes;
caddr_t asa;
int *alen;
@@ -569,7 +569,7 @@ linux_getpeername(struct thread *td, struct linux_getpeername_args *args)
bsd_args.fdes = linux_args.s;
bsd_args.asa = (caddr_t) linux_args.addr;
bsd_args.alen = linux_args.namelen;
- return (ogetpeername(td, &bsd_args));
+ return (getpeername(td, &bsd_args));
}
struct linux_socketpair_args {
@@ -615,11 +615,13 @@ static int
linux_send(struct thread *td, struct linux_send_args *args)
{
struct linux_send_args linux_args;
- struct osend_args /* {
- int s;
+ struct sendto_args /* {
+ int s;
caddr_t buf;
- int len;
+ size_t len;
int flags;
+ caddr_t to;
+ int tolen;
} */ bsd_args;
int error;
@@ -630,7 +632,9 @@ linux_send(struct thread *td, struct linux_send_args *args)
bsd_args.buf = linux_args.msg;
bsd_args.len = linux_args.len;
bsd_args.flags = linux_args.flags;
- return (osend(td, &bsd_args));
+ bsd_args.to = NULL;
+ bsd_args.tolen = 0;
+ return (sendto(td, &bsd_args));
}
struct linux_recv_args {
@@ -644,11 +648,13 @@ static int
linux_recv(struct thread *td, struct linux_recv_args *args)
{
struct linux_recv_args linux_args;
- struct orecv_args /* {
+ struct recvfrom_args /* {
int s;
caddr_t buf;
int len;
int flags;
+ caddr_t from;
+ int fromlen;
} */ bsd_args;
int error;
@@ -659,7 +665,9 @@ linux_recv(struct thread *td, struct linux_recv_args *args)
bsd_args.buf = linux_args.msg;
bsd_args.len = linux_args.len;
bsd_args.flags = linux_args.flags;
- return (orecv(td, &bsd_args));
+ bsd_args.from = NULL;
+ bsd_args.fromlenaddr = NULL;
+ return (recvfrom(td, &bsd_args));
}
struct linux_sendto_args {
@@ -734,7 +742,7 @@ linux_recvfrom(struct thread *td, struct linux_recvfrom_args *args)
bsd_args.flags = linux_to_bsd_msg_flags(linux_args.flags);
bsd_args.from = linux_args.from;
bsd_args.fromlenaddr = linux_args.fromlen;
- return (orecvfrom(td, &bsd_args));
+ return (recvfrom(td, &bsd_args));
}
struct linux_recvmsg_args {
diff --git a/sys/compat/linux/linux_sysctl.c b/sys/compat/linux/linux_sysctl.c
index 294da08..153e0ac 100644
--- a/sys/compat/linux/linux_sysctl.c
+++ b/sys/compat/linux/linux_sysctl.c
@@ -29,7 +29,11 @@
*/
#include <sys/param.h>
+#include <sys/lock.h>
#include <sys/malloc.h>
+#include <sys/mutex.h>
+#include <sys/proc.h>
+#include <sys/sysctl.h>
#include <sys/systm.h>
#include <machine/../linux/linux.h>
@@ -117,3 +121,20 @@ linux_sysctl(struct thread *td, struct linux_sysctl_args *args)
free(mib, M_TEMP);
return (ENOTDIR);
}
+
+int
+linux_sethostname(struct thread *td, struct linux_sethostname_args *uap)
+{
+ int name[2];
+ int error;
+
+ name[0] = CTL_KERN;
+ name[1] = KERN_HOSTNAME;
+ mtx_lock(&Giant);
+ if ((error = suser_cred(td->td_ucred, PRISON_ROOT)) == 0) {
+ error = userland_sysctl(td, name, 2, 0, 0, 0,
+ uap->hostname, uap->len, 0);
+ }
+ mtx_unlock(&Giant);
+ return (error);
+}
diff --git a/sys/compat/svr4/svr4_stream.c b/sys/compat/svr4/svr4_stream.c
index 1618ac1..21ec309 100644
--- a/sys/compat/svr4/svr4_stream.c
+++ b/sys/compat/svr4/svr4_stream.c
@@ -2252,24 +2252,30 @@ int svr4_sys_send(td, uap)
struct thread *td;
struct svr4_sys_send_args *uap;
{
- struct osend_args osa;
+ struct sendto_args osa;
+
SCARG(&osa, s) = SCARG(uap, s);
SCARG(&osa, buf) = SCARG(uap, buf);
SCARG(&osa, len) = SCARG(uap, len);
SCARG(&osa, flags) = SCARG(uap, flags);
- return osend(td, &osa);
+ SCARG(&osa, to) = NULL;
+ SCARG(&osa, tolen) = 0;
+ return sendto(td, &osa);
}
int svr4_sys_recv(td, uap)
struct thread *td;
struct svr4_sys_recv_args *uap;
{
- struct orecv_args ora;
+ struct recvfrom_args ora;
+
SCARG(&ora, s) = SCARG(uap, s);
SCARG(&ora, buf) = SCARG(uap, buf);
SCARG(&ora, len) = SCARG(uap, len);
SCARG(&ora, flags) = SCARG(uap, flags);
- return orecv(td, &ora);
+ SCARG(&osa, from) = NULL;
+ SCARG(&osa, fromlen) = 0;
+ return recvfrom(td, &ora);
}
/*
OpenPOWER on IntegriCloud