PERFORCE change 85345 for review

Bjoern A. Zeeb bz at FreeBSD.org
Sat Oct 15 09:38:12 PDT 2005


http://perforce.freebsd.org/chv.cgi?CH=85345

Change 85345 by bz at bz_y2k_i386 on 2005/10/15 16:37:24

	IFC
	setkey now lives in sbin and no longer in usr.sbin

Affected files ...

.. //depot/projects/fast_ipsec/src/sbin/setkey/Makefile#1 branch
.. //depot/projects/fast_ipsec/src/sbin/setkey/parse.y#1 branch
.. //depot/projects/fast_ipsec/src/sbin/setkey/sample.cf#1 branch
.. //depot/projects/fast_ipsec/src/sbin/setkey/scriptdump.pl#1 branch
.. //depot/projects/fast_ipsec/src/sbin/setkey/setkey.8#1 branch
.. //depot/projects/fast_ipsec/src/sbin/setkey/setkey.c#1 branch
.. //depot/projects/fast_ipsec/src/sbin/setkey/test-pfkey.c#1 branch
.. //depot/projects/fast_ipsec/src/sbin/setkey/test-policy.c#1 branch
.. //depot/projects/fast_ipsec/src/sbin/setkey/token.l#1 branch
.. //depot/projects/fast_ipsec/src/sbin/setkey/vchar.h#1 branch
.. //depot/projects/fast_ipsec/src/sys/compat/freebsd32/freebsd32_misc.c#3 integrate
.. //depot/projects/fast_ipsec/src/sys/compat/freebsd32/freebsd32_proto.h#3 integrate
.. //depot/projects/fast_ipsec/src/sys/compat/freebsd32/freebsd32_syscall.h#3 integrate
.. //depot/projects/fast_ipsec/src/sys/compat/freebsd32/freebsd32_syscalls.c#3 integrate
.. //depot/projects/fast_ipsec/src/sys/compat/freebsd32/freebsd32_sysent.c#3 integrate
.. //depot/projects/fast_ipsec/src/sys/compat/freebsd32/syscalls.master#3 integrate
.. //depot/projects/fast_ipsec/src/sys/kern/kern_time.c#2 integrate
.. //depot/projects/fast_ipsec/src/sys/kern/uipc_syscalls.c#2 integrate
.. //depot/projects/fast_ipsec/src/sys/netinet6/raw_ip6.c#2 integrate
.. //depot/projects/fast_ipsec/src/sys/sparc64/sparc64/trap.c#3 integrate
.. //depot/projects/fast_ipsec/src/sys/sys/syscallsubr.h#2 integrate

Differences ...

==== //depot/projects/fast_ipsec/src/sys/compat/freebsd32/freebsd32_misc.c#3 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/freebsd32/freebsd32_misc.c,v 1.40 2005/10/03 18:34:17 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/freebsd32/freebsd32_misc.c,v 1.43 2005/10/15 05:57:06 ps Exp $");
 
 #include "opt_compat.h"
 
@@ -797,6 +797,171 @@
 	return (error);
 }
 
+static int
+freebsd32_copyiniov(struct iovec32 *iovp, u_int iovcnt, struct iovec **iov,
+    int error)
+{
+	struct iovec32 iov32;
+	int i;
+
+	u_int iovlen;
+
+	*iov = NULL;
+	if (iovcnt > UIO_MAXIOV)
+		return (error);
+	iovlen = iovcnt * sizeof(struct iovec);
+	*iov = malloc(iovlen, M_IOV, M_WAITOK);
+	for (i = 0; i < iovcnt; i++) {
+		error = copyin(&iovp[i], &iov32, sizeof(struct iovec32));
+		if (error) {
+			free(*iov, M_IOV);
+			*iov = NULL;
+			return (error);
+		}
+		iov[i]->iov_base = PTRIN(iov32.iov_base);
+		iov[i]->iov_len = iov32.iov_len;
+	}
+	return (0);
+}
+
+struct msghdr32 {
+	u_int32_t	 msg_name;
+	socklen_t	 msg_namelen;
+	u_int32_t	 msg_iov;
+	int		 msg_iovlen;
+	u_int32_t	 msg_control;
+	socklen_t	 msg_controllen;
+	int		 msg_flags;
+};
+CTASSERT(sizeof(struct msghdr32) == 28);
+
+static int
+freebsd32_copyinmsghdr(struct msghdr32 *msg32, struct msghdr *msg)
+{
+	struct msghdr32 m32;
+	int error;
+
+	error = copyin(msg32, &m32, sizeof(m32));
+	if (error)
+		return (error);
+	msg->msg_name = PTRIN(m32.msg_name);
+	msg->msg_namelen = m32.msg_namelen;
+	msg->msg_iov = PTRIN(m32.msg_iov);
+	msg->msg_iovlen = m32.msg_iovlen;
+	msg->msg_control = PTRIN(m32.msg_control);
+	msg->msg_controllen = m32.msg_controllen;
+	msg->msg_flags = m32.msg_flags;
+	return (freebsd32_copyiniov((struct iovec32 *)(uintptr_t)m32.msg_iov, m32.msg_iovlen, &msg->msg_iov,
+	    EMSGSIZE));
+}
+
+static int
+freebsd32_copyoutmsghdr(struct msghdr *msg, struct msghdr32 *msg32)
+{
+	struct msghdr32 m32;
+	int error;
+
+	m32.msg_name = PTROUT(msg->msg_name);
+	m32.msg_namelen = msg->msg_namelen;
+	m32.msg_iov = PTROUT(msg->msg_iov);
+	m32.msg_iovlen = msg->msg_iovlen;
+	m32.msg_control = PTROUT(msg->msg_control);
+	m32.msg_controllen = msg->msg_controllen;
+	m32.msg_flags = msg->msg_flags;
+	error = copyout(&m32, msg32, sizeof(m32));
+	return (error);
+}
+
+int
+freebsd32_recvmsg(td, uap)
+	struct thread *td;
+	struct freebsd32_recvmsg_args /* {
+		int	s;
+		struct	msghdr32 *msg;
+		int	flags;
+	} */ *uap;
+{
+	struct msghdr msg;
+	struct msghdr32 m32;
+	struct iovec *uiov, *iov;
+	int error;
+
+	error = copyin(uap->msg, &m32, sizeof(m32));
+	if (error)
+		return (error);
+	error = freebsd32_copyinmsghdr(uap->msg, &msg);
+	if (error)
+		return (error);
+	error = freebsd32_copyiniov((struct iovec32 *)(uintptr_t)m32.msg_iov,
+	    m32.msg_iovlen, &iov, EMSGSIZE);
+	if (error)
+		return (error);
+	msg.msg_flags = uap->flags;
+	uiov = msg.msg_iov;
+	msg.msg_iov = iov;
+	error = kern_recvit(td, uap->s, &msg, NULL, UIO_SYSSPACE);
+	if (error == 0) {
+		msg.msg_iov = uiov;
+		error = freebsd32_copyoutmsghdr(&msg, uap->msg);
+	}
+	free(iov, M_IOV);
+	free(uiov, M_IOV);
+	return (error);
+}
+
+int
+freebsd32_sendmsg(struct thread *td,
+		  struct freebsd32_sendmsg_args *uap)
+{
+	struct msghdr msg;
+	struct msghdr32 m32;
+	struct iovec *iov;
+	int error;
+
+	error = copyin(uap->msg, &m32, sizeof(m32));
+	if (error)
+		return (error);
+	error = freebsd32_copyinmsghdr(uap->msg, &msg);
+	if (error)
+		return (error);
+	error = freebsd32_copyiniov((struct iovec32 *)(uintptr_t)m32.msg_iov,
+	    m32.msg_iovlen, &iov, EMSGSIZE);
+	if (error)
+		return (error);
+	msg.msg_iov = iov;
+	error = kern_sendit(td, uap->s, &msg, uap->flags, NULL, UIO_SYSSPACE);
+	free(iov, M_IOV);
+	return (error);
+}
+
+int
+freebsd32_recvfrom(struct thread *td,
+		   struct freebsd32_recvfrom_args *uap)
+{
+	struct msghdr msg;
+	struct iovec aiov;
+	int error;
+
+	if (uap->fromlenaddr) {
+		error = copyin((void *)(uintptr_t)uap->fromlenaddr,
+		    &msg.msg_namelen, sizeof(msg.msg_namelen));
+		if (error)
+			return (error);
+	} else {
+		msg.msg_namelen = 0;
+	}
+
+	msg.msg_name = (void *)(uintptr_t)uap->from;
+	msg.msg_iov = &aiov;
+	msg.msg_iovlen = 1;
+	aiov.iov_base = (void *)(uintptr_t)uap->buf;
+	aiov.iov_len = uap->len;
+	msg.msg_control = 0;
+	msg.msg_flags = uap->flags;
+	error = kern_recvit(td, uap->s, &msg, (void *)(uintptr_t)uap->fromlenaddr, UIO_USERSPACE);
+	return (error);
+}
+
 int
 freebsd32_settimeofday(struct thread *td,
 		       struct freebsd32_settimeofday_args *uap)
@@ -1236,7 +1401,7 @@
 	struct timespec rmt, rqt;
 	int error;
 
-	error = copyin(uap->rqtp, &rqt32, sizeof(rqt));
+	error = copyin(uap->rqtp, &rqt32, sizeof(rqt32));
 	if (error)
 		return (error);
 
@@ -1253,13 +1418,66 @@
 		CP(rmt, rmt32, tv_sec);
 		CP(rmt, rmt32, tv_nsec);
 
-		error2 = copyout(&rmt32, uap->rmtp, sizeof(rmt));
+		error2 = copyout(&rmt32, uap->rmtp, sizeof(rmt32));
 		if (error2)
 			error = error2;
 	}
 	return (error);
 }
 
+int
+freebsd32_clock_gettime(struct thread *td,
+			struct freebsd32_clock_gettime_args *uap)
+{
+	struct timespec	ats;
+	struct timespec32 ats32;
+	int error;
+
+	error = kern_clock_gettime(td, uap->clock_id, &ats);
+	if (error == 0) {
+		CP(ats, ats32, tv_sec);
+		CP(ats, ats32, tv_nsec);
+		error = copyout(&ats32, uap->tp, sizeof(ats32));
+	}
+	return (error);
+}
+
+int
+freebsd32_clock_settime(struct thread *td,
+			struct freebsd32_clock_settime_args *uap)
+{
+	struct timespec	ats;
+	struct timespec32 ats32;
+	int error;
+
+	error = copyin(uap->tp, &ats32, sizeof(ats32));
+	if (error)
+		return (error);
+	CP(ats32, ats, tv_sec);
+	CP(ats32, ats, tv_nsec);
+
+	return (kern_clock_settime(td, uap->clock_id, &ats));
+}
+
+int
+freebsd32_clock_getres(struct thread *td,
+		       struct freebsd32_clock_getres_args *uap)
+{
+	struct timespec	ts;
+	struct timespec32 ts32;
+	int error;
+
+	if (uap->tp == NULL)
+		return (0);
+	error = kern_clock_getres(td, uap->clock_id, &ts);
+	if (error == 0) {
+		CP(ts, ts32, tv_sec);
+		CP(ts, ts32, tv_nsec);
+		error = copyout(&ts32, uap->tp, sizeof(ts32));
+	}
+	return (error);
+}
+
 #if 0
 
 int

==== //depot/projects/fast_ipsec/src/sys/compat/freebsd32/freebsd32_proto.h#3 (text+ko) ====

@@ -2,8 +2,8 @@
  * System call prototypes.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/compat/freebsd32/freebsd32_proto.h,v 1.40 2005/09/27 18:04:52 peter Exp $
- * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.52 2005/09/27 18:04:20 peter Exp 
+ * $FreeBSD: src/sys/compat/freebsd32/freebsd32_proto.h,v 1.43 2005/10/15 05:57:34 ps Exp $
+ * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.55 2005/10/15 05:57:06 ps Exp 
  */
 
 #ifndef _FREEBSD32_SYSPROTO_H_
@@ -38,6 +38,24 @@
 	char options_l_[PADL_(int)]; int options; char options_r_[PADR_(int)];
 	char rusage_l_[PADL_(struct rusage32 *)]; struct rusage32 * rusage; char rusage_r_[PADR_(struct rusage32 *)];
 };
+struct freebsd32_recvmsg_args {
+	char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
+	char msg_l_[PADL_(struct msghdr32 *)]; struct msghdr32 * msg; char msg_r_[PADR_(struct msghdr32 *)];
+	char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
+};
+struct freebsd32_sendmsg_args {
+	char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
+	char msg_l_[PADL_(struct msghdr32 *)]; struct msghdr32 * msg; char msg_r_[PADR_(struct msghdr32 *)];
+	char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
+};
+struct freebsd32_recvfrom_args {
+	char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
+	char buf_l_[PADL_(u_int32_t)]; u_int32_t buf; char buf_r_[PADR_(u_int32_t)];
+	char len_l_[PADL_(u_int32_t)]; u_int32_t len; char len_r_[PADR_(u_int32_t)];
+	char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
+	char from_l_[PADL_(u_int32_t)]; u_int32_t from; char from_r_[PADR_(u_int32_t)];
+	char fromlenaddr_l_[PADL_(u_int32_t)]; u_int32_t fromlenaddr; char fromlenaddr_r_[PADR_(u_int32_t)];
+};
 struct freebsd32_sigaltstack_args {
 	char ss_l_[PADL_(struct sigaltstack32 *)]; struct sigaltstack32 * ss; char ss_r_[PADR_(struct sigaltstack32 *)];
 	char oss_l_[PADL_(struct sigaltstack32 *)]; struct sigaltstack32 * oss; char oss_r_[PADR_(struct sigaltstack32 *)];
@@ -179,9 +197,21 @@
 	char new_l_[PADL_(void *)]; void * new; char new_r_[PADR_(void *)];
 	char newlen_l_[PADL_(u_int32_t)]; u_int32_t newlen; char newlen_r_[PADR_(u_int32_t)];
 };
+struct freebsd32_clock_gettime_args {
+	char clock_id_l_[PADL_(clockid_t)]; clockid_t clock_id; char clock_id_r_[PADR_(clockid_t)];
+	char tp_l_[PADL_(struct timespec32 *)]; struct timespec32 * tp; char tp_r_[PADR_(struct timespec32 *)];
+};
+struct freebsd32_clock_settime_args {
+	char clock_id_l_[PADL_(clockid_t)]; clockid_t clock_id; char clock_id_r_[PADR_(clockid_t)];
+	char tp_l_[PADL_(const struct timespec32 *)]; const struct timespec32 * tp; char tp_r_[PADR_(const struct timespec32 *)];
+};
+struct freebsd32_clock_getres_args {
+	char clock_id_l_[PADL_(clockid_t)]; clockid_t clock_id; char clock_id_r_[PADR_(clockid_t)];
+	char tp_l_[PADL_(struct timespec32 *)]; struct timespec32 * tp; char tp_r_[PADR_(struct timespec32 *)];
+};
 struct freebsd32_nanosleep_args {
-	char rqtp_l_[PADL_(const struct timespec *)]; const struct timespec * rqtp; char rqtp_r_[PADR_(const struct timespec *)];
-	char rmtp_l_[PADL_(struct timespec *)]; struct timespec * rmtp; char rmtp_r_[PADR_(struct timespec *)];
+	char rqtp_l_[PADL_(const struct timespec32 *)]; const struct timespec32 * rqtp; char rqtp_r_[PADR_(const struct timespec32 *)];
+	char rmtp_l_[PADL_(struct timespec32 *)]; struct timespec32 * rmtp; char rmtp_r_[PADR_(struct timespec32 *)];
 };
 struct freebsd32_preadv_args {
 	char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
@@ -236,6 +266,9 @@
 	char ucp_l_[PADL_(const struct freebsd32_ucontext *)]; const struct freebsd32_ucontext * ucp; char ucp_r_[PADR_(const struct freebsd32_ucontext *)];
 };
 int	freebsd32_wait4(struct thread *, struct freebsd32_wait4_args *);
+int	freebsd32_recvmsg(struct thread *, struct freebsd32_recvmsg_args *);
+int	freebsd32_sendmsg(struct thread *, struct freebsd32_sendmsg_args *);
+int	freebsd32_recvfrom(struct thread *, struct freebsd32_recvfrom_args *);
 int	freebsd32_sigaltstack(struct thread *, struct freebsd32_sigaltstack_args *);
 int	freebsd32_execve(struct thread *, struct freebsd32_execve_args *);
 int	freebsd32_setitimer(struct thread *, struct freebsd32_setitimer_args *);
@@ -261,6 +294,9 @@
 int	freebsd32_truncate(struct thread *, struct freebsd32_truncate_args *);
 int	freebsd32_ftruncate(struct thread *, struct freebsd32_ftruncate_args *);
 int	freebsd32_sysctl(struct thread *, struct freebsd32_sysctl_args *);
+int	freebsd32_clock_gettime(struct thread *, struct freebsd32_clock_gettime_args *);
+int	freebsd32_clock_settime(struct thread *, struct freebsd32_clock_settime_args *);
+int	freebsd32_clock_getres(struct thread *, struct freebsd32_clock_getres_args *);
 int	freebsd32_nanosleep(struct thread *, struct freebsd32_nanosleep_args *);
 int	freebsd32_preadv(struct thread *, struct freebsd32_preadv_args *);
 int	freebsd32_pwritev(struct thread *, struct freebsd32_pwritev_args *);

==== //depot/projects/fast_ipsec/src/sys/compat/freebsd32/freebsd32_syscall.h#3 (text+ko) ====

@@ -2,8 +2,8 @@
  * System call numbers.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscall.h,v 1.40 2005/09/27 18:04:52 peter Exp $
- * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.52 2005/09/27 18:04:20 peter Exp 
+ * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscall.h,v 1.43 2005/10/15 05:57:34 ps Exp $
+ * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.55 2005/10/15 05:57:06 ps Exp 
  */
 
 #define	FREEBSD32_SYS_syscall	0
@@ -33,8 +33,9 @@
 #define	FREEBSD32_SYS_getuid	24
 #define	FREEBSD32_SYS_geteuid	25
 #define	FREEBSD32_SYS_ptrace	26
-#define	FREEBSD32_SYS_sendmsg	28
-#define	FREEBSD32_SYS_recvfrom	29
+#define	FREEBSD32_SYS_freebsd32_recvmsg	27
+#define	FREEBSD32_SYS_freebsd32_sendmsg	28
+#define	FREEBSD32_SYS_freebsd32_recvfrom	29
 #define	FREEBSD32_SYS_accept	30
 #define	FREEBSD32_SYS_getpeername	31
 #define	FREEBSD32_SYS_getsockname	32
@@ -198,9 +199,9 @@
 #define	FREEBSD32_SYS_shmctl	229
 #define	FREEBSD32_SYS_shmdt	230
 #define	FREEBSD32_SYS_shmget	231
-#define	FREEBSD32_SYS_clock_gettime	232
-#define	FREEBSD32_SYS_clock_settime	233
-#define	FREEBSD32_SYS_clock_getres	234
+#define	FREEBSD32_SYS_freebsd32_clock_gettime	232
+#define	FREEBSD32_SYS_freebsd32_clock_settime	233
+#define	FREEBSD32_SYS_freebsd32_clock_getres	234
 #define	FREEBSD32_SYS_freebsd32_nanosleep	240
 #define	FREEBSD32_SYS_minherit	250
 #define	FREEBSD32_SYS_rfork	251

==== //depot/projects/fast_ipsec/src/sys/compat/freebsd32/freebsd32_syscalls.c#3 (text+ko) ====

@@ -2,8 +2,8 @@
  * System call names.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscalls.c,v 1.31 2005/09/27 18:04:52 peter Exp $
- * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.52 2005/09/27 18:04:20 peter Exp 
+ * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscalls.c,v 1.34 2005/10/15 05:57:34 ps Exp $
+ * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.55 2005/10/15 05:57:06 ps Exp 
  */
 
 const char *freebsd32_syscallnames[] = {
@@ -34,9 +34,9 @@
 	"getuid",			/* 24 = getuid */
 	"geteuid",			/* 25 = geteuid */
 	"ptrace",			/* 26 = ptrace */
-	"#27",			/* 27 = recvmsg */
-	"sendmsg",			/* 28 = sendmsg */
-	"recvfrom",			/* 29 = recvfrom */
+	"freebsd32_recvmsg",			/* 27 = freebsd32_recvmsg */
+	"freebsd32_sendmsg",			/* 28 = freebsd32_sendmsg */
+	"freebsd32_recvfrom",			/* 29 = freebsd32_recvfrom */
 	"accept",			/* 30 = accept */
 	"getpeername",			/* 31 = getpeername */
 	"getsockname",			/* 32 = getsockname */
@@ -239,9 +239,9 @@
 	"shmctl",			/* 229 = shmctl */
 	"shmdt",			/* 230 = shmdt */
 	"shmget",			/* 231 = shmget */
-	"clock_gettime",			/* 232 = clock_gettime */
-	"clock_settime",			/* 233 = clock_settime */
-	"clock_getres",			/* 234 = clock_getres */
+	"freebsd32_clock_gettime",			/* 232 = freebsd32_clock_gettime */
+	"freebsd32_clock_settime",			/* 233 = freebsd32_clock_settime */
+	"freebsd32_clock_getres",			/* 234 = freebsd32_clock_getres */
 	"#235",			/* 235 = timer_create */
 	"#236",			/* 236 = timer_delete */
 	"#237",			/* 237 = timer_settime */

==== //depot/projects/fast_ipsec/src/sys/compat/freebsd32/freebsd32_sysent.c#3 (text+ko) ====

@@ -2,8 +2,8 @@
  * System call switch table.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/compat/freebsd32/freebsd32_sysent.c,v 1.41 2005/09/27 18:04:52 peter Exp $
- * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.52 2005/09/27 18:04:20 peter Exp 
+ * $FreeBSD: src/sys/compat/freebsd32/freebsd32_sysent.c,v 1.44 2005/10/15 05:57:34 ps Exp $
+ * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.55 2005/10/15 05:57:06 ps Exp 
  */
 
 #include "opt_compat.h"
@@ -53,9 +53,9 @@
 	{ SYF_MPSAFE | 0, (sy_call_t *)getuid, AUE_NULL },	/* 24 = getuid */
 	{ SYF_MPSAFE | 0, (sy_call_t *)geteuid, AUE_NULL },	/* 25 = geteuid */
 	{ SYF_MPSAFE | AS(ptrace_args), (sy_call_t *)ptrace, AUE_NULL },	/* 26 = ptrace */
-	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 27 = recvmsg */
-	{ SYF_MPSAFE | AS(sendmsg_args), (sy_call_t *)sendmsg, AUE_NULL },	/* 28 = sendmsg */
-	{ SYF_MPSAFE | AS(recvfrom_args), (sy_call_t *)recvfrom, AUE_NULL },	/* 29 = recvfrom */
+	{ SYF_MPSAFE | AS(freebsd32_recvmsg_args), (sy_call_t *)freebsd32_recvmsg, AUE_NULL },	/* 27 = freebsd32_recvmsg */
+	{ SYF_MPSAFE | AS(freebsd32_sendmsg_args), (sy_call_t *)freebsd32_sendmsg, AUE_NULL },	/* 28 = freebsd32_sendmsg */
+	{ SYF_MPSAFE | AS(freebsd32_recvfrom_args), (sy_call_t *)freebsd32_recvfrom, AUE_NULL },	/* 29 = freebsd32_recvfrom */
 	{ SYF_MPSAFE | AS(accept_args), (sy_call_t *)accept, AUE_NULL },	/* 30 = accept */
 	{ SYF_MPSAFE | AS(getpeername_args), (sy_call_t *)getpeername, AUE_NULL },	/* 31 = getpeername */
 	{ SYF_MPSAFE | AS(getsockname_args), (sy_call_t *)getsockname, AUE_NULL },	/* 32 = getsockname */
@@ -258,9 +258,9 @@
 	{ SYF_MPSAFE | AS(shmctl_args), (sy_call_t *)shmctl, AUE_NULL },	/* 229 = shmctl */
 	{ SYF_MPSAFE | AS(shmdt_args), (sy_call_t *)shmdt, AUE_NULL },	/* 230 = shmdt */
 	{ SYF_MPSAFE | AS(shmget_args), (sy_call_t *)shmget, AUE_NULL },	/* 231 = shmget */
-	{ SYF_MPSAFE | AS(clock_gettime_args), (sy_call_t *)clock_gettime, AUE_NULL },	/* 232 = clock_gettime */
-	{ SYF_MPSAFE | AS(clock_settime_args), (sy_call_t *)clock_settime, AUE_NULL },	/* 233 = clock_settime */
-	{ SYF_MPSAFE | AS(clock_getres_args), (sy_call_t *)clock_getres, AUE_NULL },	/* 234 = clock_getres */
+	{ SYF_MPSAFE | AS(freebsd32_clock_gettime_args), (sy_call_t *)freebsd32_clock_gettime, AUE_NULL },	/* 232 = freebsd32_clock_gettime */
+	{ SYF_MPSAFE | AS(freebsd32_clock_settime_args), (sy_call_t *)freebsd32_clock_settime, AUE_NULL },	/* 233 = freebsd32_clock_settime */
+	{ SYF_MPSAFE | AS(freebsd32_clock_getres_args), (sy_call_t *)freebsd32_clock_getres, AUE_NULL },	/* 234 = freebsd32_clock_getres */
 	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 235 = timer_create */
 	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 236 = timer_delete */
 	{ 0, (sy_call_t *)nosys, AUE_NULL },			/* 237 = timer_settime */

==== //depot/projects/fast_ipsec/src/sys/compat/freebsd32/syscalls.master#3 (text+ko) ====

@@ -1,4 +1,4 @@
- $FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.52 2005/09/27 18:04:20 peter Exp $
+ $FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.55 2005/10/15 05:57:06 ps Exp $
 ;	from: @(#)syscalls.master	8.2 (Berkeley) 1/13/94
 ;	from: src/sys/kern/syscalls.master 1.107
 ;
@@ -88,12 +88,13 @@
 26	AUE_NULL	MNOPROTO { int ptrace(int req, pid_t pid, \
 				    caddr_t addr, int data); }
 ; XXX implement
-27	AUE_NULL	UNIMPL	recvmsg
-28	AUE_NULL	MNOPROTO { int sendmsg(int s, caddr_t msg, \
+27	AUE_NULL	MSTD	 { int freebsd32_recvmsg(int s, struct msghdr32 *msg, \
+				    int flags); }
+28	AUE_NULL	MSTD	 { int freebsd32_sendmsg(int s, struct msghdr32 *msg, \
 				    int flags); }
-29	AUE_NULL	MNOPROTO { int recvfrom(int s, caddr_t buf, \
-				    size_t len, int flags, caddr_t from, \
-				    int *fromlenaddr); }
+29	AUE_NULL	MSTD	 { int freebsd32_recvfrom(int s, u_int32_t buf, \
+				    u_int32_t len, int flags, u_int32_t from, \
+				    u_int32_t fromlenaddr); }
 30	AUE_NULL	MNOPROTO { int accept(int s, caddr_t name, \
 				    int *anamelen); }
 31	AUE_NULL	MNOPROTO { int getpeername(int fdes, caddr_t asa, \
@@ -412,20 +413,20 @@
 231	AUE_NULL	MNOPROTO { int shmget(key_t key, int size, \
 				    int shmflg); }
 ;
-232	AUE_NULL	MNOPROTO { int clock_gettime(clockid_t clock_id, \
-				    struct timespec *tp); }
-233	AUE_NULL	MNOPROTO { int clock_settime(clockid_t clock_id, \
-				    const struct timespec *tp); }
-234	AUE_NULL	MNOPROTO { int clock_getres(clockid_t clock_id, \
-				    struct timespec *tp); }
+232	AUE_NULL	MSTD 	 { int freebsd32_clock_gettime(clockid_t clock_id, \
+				    struct timespec32 *tp); }
+233	AUE_NULL	MSTD	 { int freebsd32_clock_settime(clockid_t clock_id, \
+				    const struct timespec32 *tp); }
+234	AUE_NULL	MSTD	 { int freebsd32_clock_getres(clockid_t clock_id, \
+				    struct timespec32 *tp); }
 235	AUE_NULL	UNIMPL	timer_create
 236	AUE_NULL	UNIMPL	timer_delete
 237	AUE_NULL	UNIMPL	timer_settime
 238	AUE_NULL	UNIMPL	timer_gettime
 239	AUE_NULL	UNIMPL	timer_getoverrun
 240	AUE_NULL	MSTD	{ int freebsd32_nanosleep( \
-				    const struct timespec *rqtp, \
-				    struct timespec *rmtp); }
+				    const struct timespec32 *rqtp, \
+				    struct timespec32 *rmtp); }
 241	AUE_NULL	UNIMPL	nosys
 242	AUE_NULL	UNIMPL	nosys
 243	AUE_NULL	UNIMPL	nosys

==== //depot/projects/fast_ipsec/src/sys/kern/kern_time.c#2 (text+ko) ====

@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_time.c,v 1.116 2005/03/31 22:51:18 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_time.c,v 1.117 2005/10/15 02:54:18 ps Exp $");
 
 #include "opt_mac.h"
 
@@ -155,34 +155,46 @@
 clock_gettime(struct thread *td, struct clock_gettime_args *uap)
 {
 	struct timespec ats;
+	int error;
+
+	error = kern_clock_gettime(td, uap->clock_id, &ats);
+	if (error == 0)
+		error = copyout(&ats, uap->tp, sizeof(ats));
+
+	return (error);
+}
+
+int
+kern_clock_gettime(struct thread *td, clockid_t clock_id, struct timespec *ats)
+{
 	struct timeval sys, user;
 	struct proc *p;
 
 	p = td->td_proc;
-	switch (uap->clock_id) {
+	switch (clock_id) {
 	case CLOCK_REALTIME:
-		nanotime(&ats);
+		nanotime(ats);
 		break;
 	case CLOCK_VIRTUAL:
 		PROC_LOCK(p);
 		calcru(p, &user, &sys);
 		PROC_UNLOCK(p);
-		TIMEVAL_TO_TIMESPEC(&user, &ats);
+		TIMEVAL_TO_TIMESPEC(&user, ats);
 		break;
 	case CLOCK_PROF:
 		PROC_LOCK(p);
 		calcru(p, &user, &sys);
 		PROC_UNLOCK(p);
 		timevaladd(&user, &sys);
-		TIMEVAL_TO_TIMESPEC(&user, &ats);
+		TIMEVAL_TO_TIMESPEC(&user, ats);
 		break;
 	case CLOCK_MONOTONIC:
-		nanouptime(&ats);
+		nanouptime(ats);
 		break;
 	default:
 		return (EINVAL);
 	}
-	return (copyout(&ats, uap->tp, sizeof(ats)));
+	return (0);
 }
 
 #ifndef _SYS_SYSPROTO_H_
@@ -199,8 +211,18 @@
 int
 clock_settime(struct thread *td, struct clock_settime_args *uap)
 {
+	struct timespec ats;
+	int error;
+
+	if ((error = copyin(uap->tp, &ats, sizeof(ats))) != 0)
+		return (error);
+	return (kern_clock_settime(td, uap->clock_id, &ats));
+}
+
+int
+kern_clock_settime(struct thread *td, clockid_t clock_id, struct timespec *ats)
+{
 	struct timeval atv;
-	struct timespec ats;
 	int error;
 
 #ifdef MAC
@@ -210,14 +232,12 @@
 #endif
 	if ((error = suser(td)) != 0)
 		return (error);
-	if (uap->clock_id != CLOCK_REALTIME)
+	if (clock_id != CLOCK_REALTIME)
 		return (EINVAL);
-	if ((error = copyin(uap->tp, &ats, sizeof(ats))) != 0)
-		return (error);
-	if (ats.tv_nsec < 0 || ats.tv_nsec >= 1000000000)
+	if (ats->tv_nsec < 0 || ats->tv_nsec >= 1000000000)
 		return (EINVAL);
 	/* XXX Don't convert nsec->usec and back */
-	TIMESPEC_TO_TIMEVAL(&atv, &ats);
+	TIMESPEC_TO_TIMEVAL(&atv, ats);
 	error = settime(td, &atv);
 	return (error);
 }
@@ -233,9 +253,23 @@
 clock_getres(struct thread *td, struct clock_getres_args *uap)
 {
 	struct timespec ts;
+	int error;
+
+	if (uap->tp == NULL)
+		return (0);
+
+	error = kern_clock_getres(td, uap->clock_id, &ts);
+	if (error == 0)
+		error = copyout(&ts, uap->tp, sizeof(ts));
+	return (error);
+}
 
-	ts.tv_sec = 0;
-	switch (uap->clock_id) {
+int
+kern_clock_getres(struct thread *td, clockid_t clock_id, struct timespec *ts)
+{
+
+	ts->tv_sec = 0;
+	switch (clock_id) {
 	case CLOCK_REALTIME:
 	case CLOCK_MONOTONIC:
 		/*
@@ -243,19 +277,17 @@
 		 * Rounding up is especially important if rounding down
 		 * would give 0.  Perfect rounding is unimportant.
 		 */
-		ts.tv_nsec = 1000000000 / tc_getfrequency() + 1;
+		ts->tv_nsec = 1000000000 / tc_getfrequency() + 1;
 		break;
 	case CLOCK_VIRTUAL:
 	case CLOCK_PROF:
 		/* Accurately round up here because we can do so cheaply. */
-		ts.tv_nsec = (1000000000 + hz - 1) / hz;
+		ts->tv_nsec = (1000000000 + hz - 1) / hz;
 		break;
 	default:
 		return (EINVAL);
 	}
-	if (uap->tp == NULL)
-		return (0);
-	return (copyout(&ts, uap->tp, sizeof(ts)));
+	return (0);
 }
 
 static int nanowait;

==== //depot/projects/fast_ipsec/src/sys/kern/uipc_syscalls.c#2 (text+ko) ====

@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/uipc_syscalls.c,v 1.221 2005/07/05 22:49:09 rwatson Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/uipc_syscalls.c,v 1.222 2005/10/15 05:57:06 ps Exp $");
 
 #include "opt_compat.h"
 #include "opt_ktrace.h"
@@ -922,12 +922,13 @@
 	return (error);
 }
 
-static int
-recvit(td, s, mp, namelenp)
+int
+kern_recvit(td, s, mp, namelenp, segflg)
 	struct thread *td;
 	int s;
 	struct msghdr *mp;
 	void *namelenp;
+	enum uio_seg segflg;
 {
 	struct uio auio;
 	struct iovec *iov;
@@ -964,7 +965,7 @@
 
 	auio.uio_iov = mp->msg_iov;
 	auio.uio_iovcnt = mp->msg_iovlen;
-	auio.uio_segflg = UIO_USERSPACE;
+	auio.uio_segflg = segflg;
 	auio.uio_rw = UIO_READ;
 	auio.uio_td = td;
 	auio.uio_offset = 0;			/* XXX */
@@ -1082,6 +1083,17 @@
 	return (error);
 }
 
+static int
+recvit(td, s, mp, namelenp)
+	struct thread *td;
+	int s;
+	struct msghdr *mp;
+	void *namelenp;
+{
+
+	return (kern_recvit(td, s, mp, namelenp, UIO_USERSPACE));
+}
+
 /*
  * MPSAFE
  */

==== //depot/projects/fast_ipsec/src/sys/netinet6/raw_ip6.c#2 (text+ko) ====

@@ -26,7 +26,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/netinet6/raw_ip6.c,v 1.55 2005/08/18 11:11:27 suz Exp $
+ * $FreeBSD: src/sys/netinet6/raw_ip6.c,v 1.56 2005/10/15 08:49:49 suz Exp $
  */
 
 /*-
@@ -566,8 +566,10 @@
 	}
 	MALLOC(filter, struct icmp6_filter *,
 	       sizeof(struct icmp6_filter), M_PCB, M_NOWAIT);
-	if (filter == NULL)
+	if (filter == NULL) {
+		INP_INFO_WUNLOCK(&ripcbinfo);
 		return ENOMEM;
+	}
 	s = splnet();
 	error = in_pcballoc(so, &ripcbinfo, "raw6inp");
 	splx(s);

==== //depot/projects/fast_ipsec/src/sys/sparc64/sparc64/trap.c#3 (text+ko) ====

@@ -37,7 +37,7 @@
  *
  *      from: @(#)trap.c        7.4 (Berkeley) 5/13/91
  * 	from: FreeBSD: src/sys/i386/i386/trap.c,v 1.197 2001/07/19
- * $FreeBSD: src/sys/sparc64/sparc64/trap.c,v 1.75 2005/10/14 12:43:47 davidxu Exp $
+ * $FreeBSD: src/sys/sparc64/sparc64/trap.c,v 1.76 2005/10/15 02:09:43 davidxu Exp $
  */
 
 #include "opt_ddb.h"
@@ -289,7 +289,7 @@
 			ksi.ksi_signo = sig;
 			ksi.ksi_code = (int)tf->tf_type; /* XXX not POSIX */
 			/* ksi.ksi_addr = ? */
-			ksi.ksi_trap = (int)tf->tf_type;
+			ksi.ksi_trapno = (int)tf->tf_type;
 			trapsignal(td, &ksi);
 		}
 

==== //depot/projects/fast_ipsec/src/sys/sys/syscallsubr.h#2 (text+ko) ====

@@ -22,7 +22,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/sys/syscallsubr.h,v 1.31 2005/07/07 18:17:55 jhb Exp $
+ * $FreeBSD: src/sys/sys/syscallsubr.h,v 1.33 2005/10/15 05:57:05 ps Exp $
  */
 
 #ifndef _SYS_SYSCALLSUBR_H_
@@ -60,6 +60,12 @@
 	    int mode);
 int	kern_chown(struct thread *td, char *path, enum uio_seg pathseg, int uid,
 	    int gid);
+int	kern_clock_getres(struct thread *td, clockid_t clock_id,
+	    struct timespec *ts);
+int	kern_clock_gettime(struct thread *td, clockid_t clock_id,
+	    struct timespec *ats);
+int	kern_clock_settime(struct thread *td, clockid_t clock_id,
+	    struct timespec *ats);
 int	kern_connect(struct thread *td, int fd, struct sockaddr *sa);
 int	kern_execve(struct thread *td, struct image_args *args,
 	    struct mac *mac_p);
@@ -105,6 +111,8 @@
 int	kern_readlink(struct thread *td, char *path, enum uio_seg pathseg,
 	    char *buf, enum uio_seg bufseg, int count);
 int	kern_readv(struct thread *td, int fd, struct uio *auio);
+int	kern_recvit(struct thread *td, int s, struct msghdr *mp, void *namelenp,
+	    enum uio_seg segflg);
 int	kern_rename(struct thread *td, char *from, char *to,
 	    enum uio_seg pathseg);
 int	kern_rmdir(struct thread *td, char *path, enum uio_seg pathseg);


More information about the p4-projects mailing list