Module Name: src
Committed By: rtr
Date: Sat May 9 15:22:47 UTC 2015
Modified Files:
src/sys/kern: uipc_socket.c uipc_syscalls.c
src/sys/nfs: nfs_boot.c nfs_socket.c
src/sys/sys: param.h socketvar.h
Log Message:
change sosend() to accept sockaddr * instead of mbuf * for nam.
bump to 7.99.16
To generate a diff of this commit:
cvs rdiff -u -r1.244 -r1.245 src/sys/kern/uipc_socket.c
cvs rdiff -u -r1.177 -r1.178 src/sys/kern/uipc_syscalls.c
cvs rdiff -u -r1.83 -r1.84 src/sys/nfs/nfs_boot.c
cvs rdiff -u -r1.195 -r1.196 src/sys/nfs/nfs_socket.c
cvs rdiff -u -r1.477 -r1.478 src/sys/sys/param.h
cvs rdiff -u -r1.138 -r1.139 src/sys/sys/socketvar.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/kern/uipc_socket.c
diff -u src/sys/kern/uipc_socket.c:1.244 src/sys/kern/uipc_socket.c:1.245
--- src/sys/kern/uipc_socket.c:1.244 Sun May 3 04:18:45 2015
+++ src/sys/kern/uipc_socket.c Sat May 9 15:22:47 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: uipc_socket.c,v 1.244 2015/05/03 04:18:45 rtr Exp $ */
+/* $NetBSD: uipc_socket.c,v 1.245 2015/05/09 15:22:47 rtr Exp $ */
/*-
* Copyright (c) 2002, 2007, 2008, 2009 The NetBSD Foundation, Inc.
@@ -71,7 +71,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uipc_socket.c,v 1.244 2015/05/03 04:18:45 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uipc_socket.c,v 1.245 2015/05/09 15:22:47 rtr Exp $");
#include "opt_compat_netbsd.h"
#include "opt_sock_counters.h"
@@ -883,8 +883,8 @@ sodisconnect(struct socket *so)
* Data and control buffers are freed on return.
*/
int
-sosend(struct socket *so, struct mbuf *addr, struct uio *uio, struct mbuf *top,
- struct mbuf *control, int flags, struct lwp *l)
+sosend(struct socket *so, struct sockaddr *addr, struct uio *uio,
+ struct mbuf *top, struct mbuf *control, int flags, struct lwp *l)
{
struct mbuf **mp, *m;
long space, len, resid, clen, mlen;
@@ -1059,12 +1059,8 @@ sosend(struct socket *so, struct mbuf *a
error = (*so->so_proto->pr_usrreqs->pr_sendoob)(so,
top, control);
} else {
- struct sockaddr *sin = NULL;
- if (addr) {
- sin = mtod(addr, struct sockaddr *);
- }
error = (*so->so_proto->pr_usrreqs->pr_send)(so,
- top, sin, control, l);
+ top, addr, control, l);
}
if (dontroute)
so->so_options &= ~SO_DONTROUTE;
Index: src/sys/kern/uipc_syscalls.c
diff -u src/sys/kern/uipc_syscalls.c:1.177 src/sys/kern/uipc_syscalls.c:1.178
--- src/sys/kern/uipc_syscalls.c:1.177 Sat May 2 17:18:03 2015
+++ src/sys/kern/uipc_syscalls.c Sat May 9 15:22:47 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: uipc_syscalls.c,v 1.177 2015/05/02 17:18:03 rtr Exp $ */
+/* $NetBSD: uipc_syscalls.c,v 1.178 2015/05/09 15:22:47 rtr Exp $ */
/*-
* Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
@@ -61,7 +61,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uipc_syscalls.c,v 1.177 2015/05/02 17:18:03 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uipc_syscalls.c,v 1.178 2015/05/09 15:22:47 rtr Exp $");
#include "opt_pipe.h"
@@ -532,6 +532,7 @@ do_sys_sendmsg_so(struct lwp *l, int s,
{
struct iovec aiov[UIO_SMALLIOV], *iov = aiov, *tiov, *ktriov = NULL;
+ struct sockaddr *sa = NULL;
struct mbuf *to, *control;
struct uio auio;
size_t len, iovsz;
@@ -611,8 +612,12 @@ do_sys_sendmsg_so(struct lwp *l, int s,
if (mp->msg_control)
MCLAIM(control, so->so_mowner);
+ if (to) {
+ sa = mtod(to, struct sockaddr *);
+ }
+
len = auio.uio_resid;
- error = (*so->so_send)(so, to, &auio, NULL, control, flags, l);
+ error = (*so->so_send)(so, sa, &auio, NULL, control, flags, l);
/* Protocol is responsible for freeing 'control' */
control = NULL;
Index: src/sys/nfs/nfs_boot.c
diff -u src/sys/nfs/nfs_boot.c:1.83 src/sys/nfs/nfs_boot.c:1.84
--- src/sys/nfs/nfs_boot.c:1.83 Fri Apr 3 20:01:07 2015
+++ src/sys/nfs/nfs_boot.c Sat May 9 15:22:47 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: nfs_boot.c,v 1.83 2015/04/03 20:01:07 rtr Exp $ */
+/* $NetBSD: nfs_boot.c,v 1.84 2015/05/09 15:22:47 rtr Exp $ */
/*-
* Copyright (c) 1995, 1997 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nfs_boot.c,v 1.83 2015/04/03 20:01:07 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nfs_boot.c,v 1.84 2015/05/09 15:22:47 rtr Exp $");
#ifdef _KERNEL_OPT
#include "opt_nfs.h"
@@ -468,7 +468,8 @@ send_again:
error = ENOBUFS;
goto out;
}
- error = (*so->so_send)(so, nam, NULL, m, NULL, 0, lwp);
+ error = (*so->so_send)(so, mtod(nam, struct sockaddr *), NULL,
+ m, NULL, 0, lwp);
if (error) {
printf("nfs_boot: sosend: %d\n", error);
goto out;
Index: src/sys/nfs/nfs_socket.c
diff -u src/sys/nfs/nfs_socket.c:1.195 src/sys/nfs/nfs_socket.c:1.196
--- src/sys/nfs/nfs_socket.c:1.195 Sat May 2 17:18:04 2015
+++ src/sys/nfs/nfs_socket.c Sat May 9 15:22:47 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: nfs_socket.c,v 1.195 2015/05/02 17:18:04 rtr Exp $ */
+/* $NetBSD: nfs_socket.c,v 1.196 2015/05/09 15:22:47 rtr Exp $ */
/*
* Copyright (c) 1989, 1991, 1993, 1995
@@ -39,7 +39,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nfs_socket.c,v 1.195 2015/05/02 17:18:04 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nfs_socket.c,v 1.196 2015/05/09 15:22:47 rtr Exp $");
#ifdef _KERNEL_OPT
#include "opt_nfs.h"
@@ -439,7 +439,7 @@ nfs_safedisconnect(struct nfsmount *nmp)
int
nfs_send(struct socket *so, struct mbuf *nam, struct mbuf *top, struct nfsreq *rep, struct lwp *l)
{
- struct mbuf *sendnam;
+ struct sockaddr *sendnam;
int error, soflags, flags;
/* XXX nfs_doio()/nfs_request() calls with rep->r_lwp == NULL */
@@ -463,7 +463,7 @@ nfs_send(struct socket *so, struct mbuf
if ((soflags & PR_CONNREQUIRED) || (so->so_state & SS_ISCONNECTED))
sendnam = NULL;
else
- sendnam = nam;
+ sendnam = mtod(nam, struct sockaddr *);
if (so->so_type == SOCK_SEQPACKET)
flags = MSG_EOR;
else
Index: src/sys/sys/param.h
diff -u src/sys/sys/param.h:1.477 src/sys/sys/param.h:1.478
--- src/sys/sys/param.h:1.477 Sat May 2 17:18:04 2015
+++ src/sys/sys/param.h Sat May 9 15:22:47 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: param.h,v 1.477 2015/05/02 17:18:04 rtr Exp $ */
+/* $NetBSD: param.h,v 1.478 2015/05/09 15:22:47 rtr Exp $ */
/*-
* Copyright (c) 1982, 1986, 1989, 1993
@@ -63,7 +63,7 @@
* 2.99.9 (299000900)
*/
-#define __NetBSD_Version__ 799001500 /* NetBSD 7.99.15 */
+#define __NetBSD_Version__ 799001600 /* NetBSD 7.99.16 */
#define __NetBSD_Prereq__(M,m,p) (((((M) * 100000000) + \
(m) * 1000000) + (p) * 100) <= __NetBSD_Version__)
Index: src/sys/sys/socketvar.h
diff -u src/sys/sys/socketvar.h:1.138 src/sys/sys/socketvar.h:1.139
--- src/sys/sys/socketvar.h:1.138 Sat May 2 17:18:04 2015
+++ src/sys/sys/socketvar.h Sat May 9 15:22:47 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: socketvar.h,v 1.138 2015/05/02 17:18:04 rtr Exp $ */
+/* $NetBSD: socketvar.h,v 1.139 2015/05/09 15:22:47 rtr Exp $ */
/*-
* Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
@@ -127,6 +127,8 @@ struct so_accf {
char *so_accept_filter_str; /* saved user args */
};
+struct sockaddr;
+
struct socket {
kmutex_t * volatile so_lock; /* pointer to lock on structure */
kcondvar_t so_cv; /* notifier */
@@ -167,7 +169,7 @@ struct socket {
void *so_internal; /* Space for svr4 stream data */
void (*so_upcall) (struct socket *, void *, int, int);
void * so_upcallarg; /* Arg for above */
- int (*so_send) (struct socket *, struct mbuf *,
+ int (*so_send) (struct socket *, struct sockaddr *,
struct uio *, struct mbuf *,
struct mbuf *, int, struct lwp *);
int (*so_receive) (struct socket *,
@@ -241,7 +243,6 @@ extern int sock_loan_thresh;
extern kmutex_t *softnet_lock;
struct mbuf;
-struct sockaddr;
struct lwp;
struct msghdr;
struct stat;
@@ -315,7 +316,7 @@ int soreceive(struct socket *, struct mb
struct mbuf **, struct mbuf **, int *);
int soreserve(struct socket *, u_long, u_long);
void sorflush(struct socket *);
-int sosend(struct socket *, struct mbuf *, struct uio *,
+int sosend(struct socket *, struct sockaddr *, struct uio *,
struct mbuf *, struct mbuf *, int, struct lwp *);
int sosetopt(struct socket *, struct sockopt *);
int so_setsockopt(struct lwp *, struct socket *, int, int, const void *, size_t);