summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
Diffstat (limited to 'sys')
-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
-rw-r--r--sys/i386/linux/linux_proto.h5
-rw-r--r--sys/i386/linux/linux_syscall.h6
-rw-r--r--sys/i386/linux/linux_sysent.c6
-rw-r--r--sys/i386/linux/syscalls.master7
7 files changed, 64 insertions, 25 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);
}
/*
diff --git a/sys/i386/linux/linux_proto.h b/sys/i386/linux/linux_proto.h
index d98c9dd..79c0636 100644
--- a/sys/i386/linux/linux_proto.h
+++ b/sys/i386/linux/linux_proto.h
@@ -223,6 +223,10 @@ struct linux_sigsuspend_args {
struct linux_sigpending_args {
char mask_l_[PADL_(l_osigset_t *)]; l_osigset_t * mask; char mask_r_[PADR_(l_osigset_t *)];
};
+struct linux_sethostname_args {
+ char hostname_l_[PADL_(char *)]; char * hostname; char hostname_r_[PADR_(char *)];
+ char len_l_[PADL_(u_int)]; u_int len; char len_r_[PADR_(u_int)];
+};
struct linux_setrlimit_args {
char resource_l_[PADL_(l_uint)]; l_uint resource; char resource_r_[PADR_(l_uint)];
char rlim_l_[PADL_(struct l_rlimit *)]; struct l_rlimit * rlim; char rlim_r_[PADR_(struct l_rlimit *)];
@@ -691,6 +695,7 @@ int linux_setreuid16(struct thread *, struct linux_setreuid16_args *);
int linux_setregid16(struct thread *, struct linux_setregid16_args *);
int linux_sigsuspend(struct thread *, struct linux_sigsuspend_args *);
int linux_sigpending(struct thread *, struct linux_sigpending_args *);
+int linux_sethostname(struct thread *, struct linux_sethostname_args *);
int linux_setrlimit(struct thread *, struct linux_setrlimit_args *);
int linux_old_getrlimit(struct thread *, struct linux_old_getrlimit_args *);
int linux_getgroups16(struct thread *, struct linux_getgroups16_args *);
diff --git a/sys/i386/linux/linux_syscall.h b/sys/i386/linux/linux_syscall.h
index 3020d54..ca80aee 100644
--- a/sys/i386/linux/linux_syscall.h
+++ b/sys/i386/linux/linux_syscall.h
@@ -71,7 +71,7 @@
#define LINUX_SYS_linux_setregid16 71
#define LINUX_SYS_linux_sigsuspend 72
#define LINUX_SYS_linux_sigpending 73
-#define LINUX_SYS_osethostname 74
+#define LINUX_SYS_linux_sethostname 74
#define LINUX_SYS_linux_setrlimit 75
#define LINUX_SYS_linux_old_getrlimit 76
#define LINUX_SYS_getrusage 77
@@ -81,7 +81,7 @@
#define LINUX_SYS_linux_setgroups16 81
#define LINUX_SYS_linux_old_select 82
#define LINUX_SYS_linux_symlink 83
-#define LINUX_SYS_ostat 84
+#define LINUX_SYS_stat 84
#define LINUX_SYS_linux_readlink 85
#define LINUX_SYS_linux_uselib 86
#define LINUX_SYS_swapon 87
@@ -90,7 +90,7 @@
#define LINUX_SYS_linux_mmap 90
#define LINUX_SYS_munmap 91
#define LINUX_SYS_linux_truncate 92
-#define LINUX_SYS_oftruncate 93
+#define LINUX_SYS_ftruncate 93
#define LINUX_SYS_fchmod 94
#define LINUX_SYS_fchown 95
#define LINUX_SYS_getpriority 96
diff --git a/sys/i386/linux/linux_sysent.c b/sys/i386/linux/linux_sysent.c
index 608a9e3..f35c7b2 100644
--- a/sys/i386/linux/linux_sysent.c
+++ b/sys/i386/linux/linux_sysent.c
@@ -91,7 +91,7 @@ struct sysent linux_sysent[] = {
{ AS(linux_setregid16_args), (sy_call_t *)linux_setregid16 }, /* 71 = linux_setregid16 */
{ AS(linux_sigsuspend_args), (sy_call_t *)linux_sigsuspend }, /* 72 = linux_sigsuspend */
{ AS(linux_sigpending_args), (sy_call_t *)linux_sigpending }, /* 73 = linux_sigpending */
- { SYF_MPSAFE | AS(sethostname_args), (sy_call_t *)osethostname }, /* 74 = osethostname */
+ { AS(linux_sethostname_args), (sy_call_t *)linux_sethostname }, /* 74 = linux_sethostname */
{ AS(linux_setrlimit_args), (sy_call_t *)linux_setrlimit }, /* 75 = linux_setrlimit */
{ AS(linux_old_getrlimit_args), (sy_call_t *)linux_old_getrlimit }, /* 76 = linux_old_getrlimit */
{ AS(getrusage_args), (sy_call_t *)getrusage }, /* 77 = getrusage */
@@ -101,7 +101,7 @@ struct sysent linux_sysent[] = {
{ AS(linux_setgroups16_args), (sy_call_t *)linux_setgroups16 }, /* 81 = linux_setgroups16 */
{ AS(linux_old_select_args), (sy_call_t *)linux_old_select }, /* 82 = linux_old_select */
{ AS(linux_symlink_args), (sy_call_t *)linux_symlink }, /* 83 = linux_symlink */
- { AS(ostat_args), (sy_call_t *)ostat }, /* 84 = ostat */
+ { AS(stat_args), (sy_call_t *)stat }, /* 84 = stat */
{ AS(linux_readlink_args), (sy_call_t *)linux_readlink }, /* 85 = linux_readlink */
{ AS(linux_uselib_args), (sy_call_t *)linux_uselib }, /* 86 = linux_uselib */
{ AS(swapon_args), (sy_call_t *)swapon }, /* 87 = swapon */
@@ -110,7 +110,7 @@ struct sysent linux_sysent[] = {
{ AS(linux_mmap_args), (sy_call_t *)linux_mmap }, /* 90 = linux_mmap */
{ AS(munmap_args), (sy_call_t *)munmap }, /* 91 = munmap */
{ AS(linux_truncate_args), (sy_call_t *)linux_truncate }, /* 92 = linux_truncate */
- { AS(oftruncate_args), (sy_call_t *)oftruncate }, /* 93 = oftruncate */
+ { AS(ftruncate_args), (sy_call_t *)ftruncate }, /* 93 = ftruncate */
{ AS(fchmod_args), (sy_call_t *)fchmod }, /* 94 = fchmod */
{ AS(fchown_args), (sy_call_t *)fchown }, /* 95 = fchown */
{ AS(getpriority_args), (sy_call_t *)getpriority }, /* 96 = getpriority */
diff --git a/sys/i386/linux/syscalls.master b/sys/i386/linux/syscalls.master
index ea790c7..150d2a8 100644
--- a/sys/i386/linux/syscalls.master
+++ b/sys/i386/linux/syscalls.master
@@ -121,8 +121,7 @@
72 STD LINUX { int linux_sigsuspend(l_int hist0, l_int hist1, \
l_osigset_t mask); }
73 STD LINUX { int linux_sigpending(l_osigset_t *mask); }
-74 MNOPROTO LINUX { int osethostname(char *hostname, u_int len); } \
- osethostname sethostname_args int
+74 STD LINUX { int linux_sethostname(char *hostname, u_int len); }
75 STD LINUX { int linux_setrlimit(l_uint resource, \
struct l_rlimit *rlim); }
76 STD LINUX { int linux_old_getrlimit(l_uint resource, \
@@ -139,7 +138,7 @@
82 STD LINUX { int linux_old_select(struct l_old_select_argv \
*ptr); }
83 STD LINUX { int linux_symlink(char *path, char *to); }
-84 NOPROTO LINUX { int ostat(char *path, struct ostat *up); }
+84 NOPROTO LINUX { int stat(char *path, struct ostat *up); }
85 STD LINUX { int linux_readlink(char *name, char *buf, \
l_int count); }
86 STD LINUX { int linux_uselib(char *library); }
@@ -151,7 +150,7 @@
90 STD LINUX { int linux_mmap(struct l_mmap_argv *ptr); }
91 NOPROTO LINUX { int munmap(caddr_t addr, int len); }
92 STD LINUX { int linux_truncate(char *path, l_ulong length); }
-93 NOPROTO LINUX { int oftruncate(int fd, long length); }
+93 NOPROTO LINUX { int ftruncate(int fd, long length); }
94 NOPROTO LINUX { int fchmod(int fd, int mode); }
95 NOPROTO LINUX { int fchown(int fd, int uid, int gid); }
96 NOPROTO LINUX { int getpriority(int which, int who); }
OpenPOWER on IntegriCloud