Module Name: src
Committed By: rtr
Date: Sat May 2 17:18:04 UTC 2015
Modified Files:
src/sys/compat/linux/common: linux_socket.c
src/sys/compat/svr4: svr4_stream.c
src/sys/kern: uipc_socket.c uipc_syscalls.c uipc_usrreq.c
src/sys/net: if_gre.c link_proto.c raw_cb.h raw_usrreq.c rtsock.c
src/sys/netatalk: ddp_usrreq.c
src/sys/netbt: hci_socket.c l2cap_socket.c rfcomm_socket.c sco_socket.c
src/sys/netinet: dccp_usrreq.c dccp_var.h in_pcb.c in_pcb.h raw_ip.c
tcp_input.c tcp_usrreq.c udp_usrreq.c
src/sys/netinet6: dccp6_usrreq.c dccp6_var.h in6_pcb.c in6_pcb.h
raw_ip6.c udp6_output.c udp6_usrreq.c udp6_var.h
src/sys/netipsec: keysock.c
src/sys/netmpls: mpls_proto.c
src/sys/netnatm: natm.c
src/sys/netsmb: smb_trantcp.c
src/sys/nfs: nfs_socket.c
src/sys/rump/net/lib/libsockin: sockin.c
src/sys/sys: param.h protosw.h socketvar.h un.h
Log Message:
make connect syscall use sockaddr_big and modify pr_{send,connect}
nam parameter type from buf * to sockaddr *.
final commit for parameter type changes to protocol user requests
* bump kernel version to 7.99.15 for parameter type changes to pr_{send,connect}
To generate a diff of this commit:
cvs rdiff -u -r1.123 -r1.124 src/sys/compat/linux/common/linux_socket.c
cvs rdiff -u -r1.84 -r1.85 src/sys/compat/svr4/svr4_stream.c
cvs rdiff -u -r1.239 -r1.240 src/sys/kern/uipc_socket.c
cvs rdiff -u -r1.176 -r1.177 src/sys/kern/uipc_syscalls.c
cvs rdiff -u -r1.178 -r1.179 src/sys/kern/uipc_usrreq.c
cvs rdiff -u -r1.164 -r1.165 src/sys/net/if_gre.c
cvs rdiff -u -r1.27 -r1.28 src/sys/net/link_proto.c
cvs rdiff -u -r1.24 -r1.25 src/sys/net/raw_cb.h
cvs rdiff -u -r1.53 -r1.54 src/sys/net/raw_usrreq.c
cvs rdiff -u -r1.170 -r1.171 src/sys/net/rtsock.c
cvs rdiff -u -r1.67 -r1.68 src/sys/netatalk/ddp_usrreq.c
cvs rdiff -u -r1.43 -r1.44 src/sys/netbt/hci_socket.c
cvs rdiff -u -r1.34 -r1.35 src/sys/netbt/l2cap_socket.c
cvs rdiff -u -r1.36 -r1.37 src/sys/netbt/rfcomm_socket.c \
src/sys/netbt/sco_socket.c
cvs rdiff -u -r1.5 -r1.6 src/sys/netinet/dccp_usrreq.c
cvs rdiff -u -r1.1 -r1.2 src/sys/netinet/dccp_var.h
cvs rdiff -u -r1.159 -r1.160 src/sys/netinet/in_pcb.c
cvs rdiff -u -r1.57 -r1.58 src/sys/netinet/in_pcb.h
cvs rdiff -u -r1.151 -r1.152 src/sys/netinet/raw_ip.c
cvs rdiff -u -r1.338 -r1.339 src/sys/netinet/tcp_input.c
cvs rdiff -u -r1.207 -r1.208 src/sys/netinet/tcp_usrreq.c
cvs rdiff -u -r1.220 -r1.221 src/sys/netinet/udp_usrreq.c
cvs rdiff -u -r1.5 -r1.6 src/sys/netinet6/dccp6_usrreq.c
cvs rdiff -u -r1.3 -r1.4 src/sys/netinet6/dccp6_var.h
cvs rdiff -u -r1.139 -r1.140 src/sys/netinet6/in6_pcb.c \
src/sys/netinet6/raw_ip6.c
cvs rdiff -u -r1.44 -r1.45 src/sys/netinet6/in6_pcb.h
cvs rdiff -u -r1.48 -r1.49 src/sys/netinet6/udp6_output.c
cvs rdiff -u -r1.119 -r1.120 src/sys/netinet6/udp6_usrreq.c
cvs rdiff -u -r1.27 -r1.28 src/sys/netinet6/udp6_var.h
cvs rdiff -u -r1.47 -r1.48 src/sys/netipsec/keysock.c
cvs rdiff -u -r1.27 -r1.28 src/sys/netmpls/mpls_proto.c
cvs rdiff -u -r1.48 -r1.49 src/sys/netnatm/natm.c
cvs rdiff -u -r1.47 -r1.48 src/sys/netsmb/smb_trantcp.c
cvs rdiff -u -r1.194 -r1.195 src/sys/nfs/nfs_socket.c
cvs rdiff -u -r1.61 -r1.62 src/sys/rump/net/lib/libsockin/sockin.c
cvs rdiff -u -r1.476 -r1.477 src/sys/sys/param.h
cvs rdiff -u -r1.63 -r1.64 src/sys/sys/protosw.h
cvs rdiff -u -r1.137 -r1.138 src/sys/sys/socketvar.h
cvs rdiff -u -r1.55 -r1.56 src/sys/sys/un.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/compat/linux/common/linux_socket.c
diff -u src/sys/compat/linux/common/linux_socket.c:1.123 src/sys/compat/linux/common/linux_socket.c:1.124
--- src/sys/compat/linux/common/linux_socket.c:1.123 Fri Apr 3 20:01:07 2015
+++ src/sys/compat/linux/common/linux_socket.c Sat May 2 17:18:03 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: linux_socket.c,v 1.123 2015/04/03 20:01:07 rtr Exp $ */
+/* $NetBSD: linux_socket.c,v 1.124 2015/05/02 17:18:03 rtr Exp $ */
/*-
* Copyright (c) 1995, 1998, 2008 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: linux_socket.c,v 1.123 2015/04/03 20:01:07 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: linux_socket.c,v 1.124 2015/05/02 17:18:03 rtr Exp $");
#if defined(_KERNEL_OPT)
#include "opt_inet.h"
@@ -1402,14 +1402,14 @@ linux_sys_connect(struct lwp *l, const s
syscallarg(int) namelen;
} */
int error;
- struct mbuf *nam;
+ struct sockaddr_big sb;
- error = linux_get_sa(l, SCARG(uap, s), &nam, SCARG(uap, name),
+ error = linux_get_sa_sb(l, SCARG(uap, s), &sb, SCARG(uap, name),
SCARG(uap, namelen));
if (error)
return (error);
- error = do_sys_connect(l, SCARG(uap, s), nam);
+ error = do_sys_connect(l, SCARG(uap, s), (struct sockaddr *)&sb);
if (error == EISCONN) {
struct socket *so;
Index: src/sys/compat/svr4/svr4_stream.c
diff -u src/sys/compat/svr4/svr4_stream.c:1.84 src/sys/compat/svr4/svr4_stream.c:1.85
--- src/sys/compat/svr4/svr4_stream.c:1.84 Fri Apr 24 22:32:37 2015
+++ src/sys/compat/svr4/svr4_stream.c Sat May 2 17:18:03 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: svr4_stream.c,v 1.84 2015/04/24 22:32:37 rtr Exp $ */
+/* $NetBSD: svr4_stream.c,v 1.85 2015/05/02 17:18:03 rtr Exp $ */
/*-
* Copyright (c) 1994, 2008 The NetBSD Foundation, Inc.
@@ -39,7 +39,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: svr4_stream.c,v 1.84 2015/04/24 22:32:37 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: svr4_stream.c,v 1.85 2015/05/02 17:18:03 rtr Exp $");
#include <sys/param.h>
#include <sys/kernel.h>
@@ -1495,7 +1495,8 @@ svr4_sys_putmsg(struct lwp *l, const str
switch (st->s_cmd = sc.cmd) {
case SVR4_TI_CONNECT_REQUEST: /* connect */
KERNEL_UNLOCK_ONE(NULL);
- return do_sys_connect(l, SCARG(uap, fd), nam);
+ return do_sys_connect(l, SCARG(uap, fd),
+ mtod(nam, struct sockaddr *));
case SVR4_TI_SENDTO_REQUEST: /* sendto */
KERNEL_UNLOCK_ONE(NULL);
Index: src/sys/kern/uipc_socket.c
diff -u src/sys/kern/uipc_socket.c:1.239 src/sys/kern/uipc_socket.c:1.240
--- src/sys/kern/uipc_socket.c:1.239 Fri Apr 24 22:32:37 2015
+++ src/sys/kern/uipc_socket.c Sat May 2 17:18:03 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: uipc_socket.c,v 1.239 2015/04/24 22:32:37 rtr Exp $ */
+/* $NetBSD: uipc_socket.c,v 1.240 2015/05/02 17:18:03 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.239 2015/04/24 22:32:37 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uipc_socket.c,v 1.240 2015/05/02 17:18:03 rtr Exp $");
#include "opt_compat_netbsd.h"
#include "opt_sock_counters.h"
@@ -811,7 +811,7 @@ soaccept(struct socket *so, struct socka
}
int
-soconnect(struct socket *so, struct mbuf *nam, struct lwp *l)
+soconnect(struct socket *so, struct sockaddr *nam, struct lwp *l)
{
int error;
@@ -1051,12 +1051,17 @@ sosend(struct socket *so, struct mbuf *a
so->so_options |= SO_DONTROUTE;
if (resid > 0)
so->so_state |= SS_MORETOCOME;
- if (flags & MSG_OOB)
+ if (flags & MSG_OOB) {
error = (*so->so_proto->pr_usrreqs->pr_sendoob)(so,
top, control);
- else
+ } else {
+ struct sockaddr *sin = NULL;
+ if (addr) {
+ sin = mtod(addr, struct sockaddr *);
+ }
error = (*so->so_proto->pr_usrreqs->pr_send)(so,
- top, addr, control, l);
+ top, sin, control, l);
+ }
if (dontroute)
so->so_options &= ~SO_DONTROUTE;
if (resid > 0)
Index: src/sys/kern/uipc_syscalls.c
diff -u src/sys/kern/uipc_syscalls.c:1.176 src/sys/kern/uipc_syscalls.c:1.177
--- src/sys/kern/uipc_syscalls.c:1.176 Fri Apr 24 22:32:37 2015
+++ src/sys/kern/uipc_syscalls.c Sat May 2 17:18:03 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: uipc_syscalls.c,v 1.176 2015/04/24 22:32:37 rtr Exp $ */
+/* $NetBSD: uipc_syscalls.c,v 1.177 2015/05/02 17:18:03 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.176 2015/04/24 22:32:37 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uipc_syscalls.c,v 1.177 2015/05/02 17:18:03 rtr Exp $");
#include "opt_pipe.h"
@@ -336,28 +336,25 @@ sys_connect(struct lwp *l, const struct
syscallarg(unsigned int) namelen;
} */
int error;
- struct mbuf *nam;
+ struct sockaddr_big sbig;
- error = sockargs(&nam, SCARG(uap, name), SCARG(uap, namelen),
- MT_SONAME);
+ error = sockargs_sb(&sbig, SCARG(uap, name), SCARG(uap, namelen));
if (error)
return error;
- return do_sys_connect(l, SCARG(uap, s), nam);
+ return do_sys_connect(l, SCARG(uap, s), (struct sockaddr *)&sbig);
}
int
-do_sys_connect(struct lwp *l, int fd, struct mbuf *nam)
+do_sys_connect(struct lwp *l, int fd, struct sockaddr *nam)
{
struct socket *so;
int error;
int interrupted = 0;
if ((error = fd_getsock(fd, &so)) != 0) {
- m_freem(nam);
return (error);
}
solock(so);
- MCLAIM(nam, so->so_mowner);
if ((so->so_state & SS_ISCONNECTING) != 0) {
error = EALREADY;
goto out;
@@ -396,7 +393,6 @@ do_sys_connect(struct lwp *l, int fd, st
out:
sounlock(so);
fd_putfile(fd);
- m_freem(nam);
return error;
}
Index: src/sys/kern/uipc_usrreq.c
diff -u src/sys/kern/uipc_usrreq.c:1.178 src/sys/kern/uipc_usrreq.c:1.179
--- src/sys/kern/uipc_usrreq.c:1.178 Sun Apr 26 21:40:48 2015
+++ src/sys/kern/uipc_usrreq.c Sat May 2 17:18:03 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: uipc_usrreq.c,v 1.178 2015/04/26 21:40:48 rtr Exp $ */
+/* $NetBSD: uipc_usrreq.c,v 1.179 2015/05/02 17:18:03 rtr Exp $ */
/*-
* Copyright (c) 1998, 2000, 2004, 2008, 2009 The NetBSD Foundation, Inc.
@@ -96,7 +96,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uipc_usrreq.c,v 1.178 2015/04/26 21:40:48 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uipc_usrreq.c,v 1.179 2015/05/02 17:18:03 rtr Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -409,7 +409,7 @@ unp_recvoob(struct socket *so, struct mb
}
static int
-unp_send(struct socket *so, struct mbuf *m, struct mbuf *nam,
+unp_send(struct socket *so, struct mbuf *m, struct sockaddr *nam,
struct mbuf *control, struct lwp *l)
{
struct unpcb *unp = sotounpcb(so);
@@ -861,28 +861,6 @@ unp_sockaddr(struct socket *so, struct s
}
/*
- * Allocate the new sockaddr. We have to allocate one
- * extra byte so that we can ensure that the pathname
- * is nul-terminated. Note that unlike linux, we don't
- * include in the address length the NUL in the path
- * component, because doing so, would exceed sizeof(sockaddr_un)
- * for fully occupied pathnames. Linux is also inconsistent,
- * because it does not include the NUL in the length of
- * what it calls "abstract" unix sockets.
- */
-static struct sockaddr_un *
-makeun(struct mbuf *nam, size_t *addrlen)
-{
- struct sockaddr_un *sun;
-
- *addrlen = nam->m_len + 1;
- sun = malloc(*addrlen, M_SONAME, M_WAITOK);
- m_copydata(nam, 0, nam->m_len, (void *)sun);
- *(((char *)sun) + nam->m_len) = '\0';
- return sun;
-}
-
-/*
* we only need to perform this allocation until syscalls other than
* bind are adjusted to use sockaddr_big.
*/
@@ -1105,7 +1083,7 @@ unp_connect1(struct socket *so, struct s
}
int
-unp_connect(struct socket *so, struct mbuf *nam, struct lwp *l)
+unp_connect(struct socket *so, struct sockaddr *nam, struct lwp *l)
{
struct sockaddr_un *sun;
vnode_t *vp;
@@ -1127,7 +1105,7 @@ unp_connect(struct socket *so, struct mb
unp->unp_flags |= UNP_BUSY;
sounlock(so);
- sun = makeun(nam, &addrlen);
+ sun = makeun_sb(nam, &addrlen);
pb = pathbuf_create(sun->sun_path);
if (pb == NULL) {
error = ENOMEM;
Index: src/sys/net/if_gre.c
diff -u src/sys/net/if_gre.c:1.164 src/sys/net/if_gre.c:1.165
--- src/sys/net/if_gre.c:1.164 Fri Apr 24 22:32:37 2015
+++ src/sys/net/if_gre.c Sat May 2 17:18:03 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: if_gre.c,v 1.164 2015/04/24 22:32:37 rtr Exp $ */
+/* $NetBSD: if_gre.c,v 1.165 2015/05/02 17:18:03 rtr Exp $ */
/*
* Copyright (c) 1998, 2008 The NetBSD Foundation, Inc.
@@ -45,7 +45,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_gre.c,v 1.164 2015/04/24 22:32:37 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_gre.c,v 1.165 2015/05/02 17:18:03 rtr Exp $");
#include "opt_atalk.h"
#include "opt_gre.h"
@@ -418,9 +418,8 @@ static int
gre_socreate(struct gre_softc *sc, const struct gre_soparm *sp, int *fdout)
{
int fd, rc;
- struct mbuf *m;
- struct sockaddr *sa;
struct socket *so;
+ struct sockaddr_big sbig;
sa_family_t af;
int val;
@@ -436,32 +435,21 @@ gre_socreate(struct gre_softc *sc, const
if ((rc = fd_getsock(fd, &so)) != 0)
return rc;
- if ((m = getsombuf(so, MT_SONAME)) == NULL) {
- rc = ENOBUFS;
- goto out;
- }
- sa = mtod(m, struct sockaddr *);
- sockaddr_copy(sa, MIN(MLEN, sizeof(sp->sp_src)), sstocsa(&sp->sp_src));
- m->m_len = sp->sp_src.ss_len;
-
- if ((rc = sobind(so, sa, curlwp)) != 0) {
+ memcpy(&sbig, &sp->sp_src, sizeof(sp->sp_src));
+ if ((rc = sobind(so, (struct sockaddr *)&sbig, curlwp)) != 0) {
GRE_DPRINTF(sc, "sobind failed\n");
goto out;
}
- sockaddr_copy(sa, MIN(MLEN, sizeof(sp->sp_dst)), sstocsa(&sp->sp_dst));
- m->m_len = sp->sp_dst.ss_len;
-
+ memcpy(&sbig, &sp->sp_dst, sizeof(sp->sp_dst));
solock(so);
- if ((rc = soconnect(so, m, curlwp)) != 0) {
+ if ((rc = soconnect(so, (struct sockaddr *)&sbig, curlwp)) != 0) {
GRE_DPRINTF(sc, "soconnect failed\n");
sounlock(so);
goto out;
}
sounlock(so);
- m = NULL;
-
/* XXX convert to a (new) SOL_SOCKET call */
KASSERT(so->so_proto != NULL);
rc = so_setsockopt(curlwp, so, IPPROTO_IP, IP_TTL,
@@ -479,8 +467,6 @@ gre_socreate(struct gre_softc *sc, const
rc = 0;
}
out:
- m_freem(m);
-
if (rc != 0)
fd_close(fd);
else {
Index: src/sys/net/link_proto.c
diff -u src/sys/net/link_proto.c:1.27 src/sys/net/link_proto.c:1.28
--- src/sys/net/link_proto.c:1.27 Sun Apr 26 21:40:48 2015
+++ src/sys/net/link_proto.c Sat May 2 17:18:03 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: link_proto.c,v 1.27 2015/04/26 21:40:48 rtr Exp $ */
+/* $NetBSD: link_proto.c,v 1.28 2015/05/02 17:18:03 rtr Exp $ */
/*-
* Copyright (c) 1982, 1986, 1993
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: link_proto.c,v 1.27 2015/04/26 21:40:48 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: link_proto.c,v 1.28 2015/05/02 17:18:03 rtr Exp $");
#include <sys/param.h>
#include <sys/socket.h>
@@ -53,7 +53,7 @@ static void link_detach(struct socket *)
static int link_accept(struct socket *, struct sockaddr *);
static int link_bind(struct socket *, struct sockaddr *, struct lwp *);
static int link_listen(struct socket *, struct lwp *);
-static int link_connect(struct socket *, struct mbuf *, struct lwp *);
+static int link_connect(struct socket *, struct sockaddr *, struct lwp *);
static int link_connect2(struct socket *, struct socket *);
static int link_disconnect(struct socket *);
static int link_shutdown(struct socket *);
@@ -64,7 +64,7 @@ static int link_peeraddr(struct socket *
static int link_sockaddr(struct socket *, struct sockaddr *);
static int link_rcvd(struct socket *, int, struct lwp *);
static int link_recvoob(struct socket *, struct mbuf *, int);
-static int link_send(struct socket *, struct mbuf *, struct mbuf *,
+static int link_send(struct socket *, struct mbuf *, struct sockaddr *,
struct mbuf *, struct lwp *);
static int link_sendoob(struct socket *, struct mbuf *, struct mbuf *);
static int link_purgeif(struct socket *, struct ifnet *);
@@ -287,7 +287,7 @@ link_listen(struct socket *so, struct lw
}
static int
-link_connect(struct socket *so, struct mbuf *nam, struct lwp *l)
+link_connect(struct socket *so, struct sockaddr *nam, struct lwp *l)
{
KASSERT(solocked(so));
@@ -373,7 +373,7 @@ link_recvoob(struct socket *so, struct m
}
static int
-link_send(struct socket *so, struct mbuf *m, struct mbuf *nam,
+link_send(struct socket *so, struct mbuf *m, struct sockaddr *nam,
struct mbuf *control, struct lwp *l)
{
KASSERT(solocked(so));
Index: src/sys/net/raw_cb.h
diff -u src/sys/net/raw_cb.h:1.24 src/sys/net/raw_cb.h:1.25
--- src/sys/net/raw_cb.h:1.24 Fri Apr 24 22:32:37 2015
+++ src/sys/net/raw_cb.h Sat May 2 17:18:03 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: raw_cb.h,v 1.24 2015/04/24 22:32:37 rtr Exp $ */
+/* $NetBSD: raw_cb.h,v 1.25 2015/05/02 17:18:03 rtr Exp $ */
/*
* Copyright (c) 1980, 1986, 1993
@@ -71,7 +71,7 @@ int raw_usrreq(struct socket *,
void raw_setsockaddr(struct rawcb *, struct sockaddr *);
void raw_setpeeraddr(struct rawcb *, struct sockaddr *);
int raw_send(struct socket *,
- struct mbuf *, struct mbuf *, struct mbuf *, struct lwp *);
+ struct mbuf *, struct sockaddr *, struct mbuf *, struct lwp *);
#endif /* _KERNEL */
Index: src/sys/net/raw_usrreq.c
diff -u src/sys/net/raw_usrreq.c:1.53 src/sys/net/raw_usrreq.c:1.54
--- src/sys/net/raw_usrreq.c:1.53 Fri Apr 24 22:32:37 2015
+++ src/sys/net/raw_usrreq.c Sat May 2 17:18:03 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: raw_usrreq.c,v 1.53 2015/04/24 22:32:37 rtr Exp $ */
+/* $NetBSD: raw_usrreq.c,v 1.54 2015/05/02 17:18:03 rtr Exp $ */
/*
* Copyright (c) 1980, 1986, 1993
@@ -36,7 +36,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: raw_usrreq.c,v 1.53 2015/04/24 22:32:37 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: raw_usrreq.c,v 1.54 2015/05/02 17:18:03 rtr Exp $");
#include <sys/param.h>
#include <sys/mbuf.h>
@@ -152,7 +152,7 @@ raw_setpeeraddr(struct rawcb *rp, struct
}
int
-raw_send(struct socket *so, struct mbuf *m, struct mbuf *nam,
+raw_send(struct socket *so, struct mbuf *m, struct sockaddr *nam,
struct mbuf *control, struct lwp *l)
{
struct rawcb *rp = sotorawcb(so);
Index: src/sys/net/rtsock.c
diff -u src/sys/net/rtsock.c:1.170 src/sys/net/rtsock.c:1.171
--- src/sys/net/rtsock.c:1.170 Sun Apr 26 21:40:48 2015
+++ src/sys/net/rtsock.c Sat May 2 17:18:03 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: rtsock.c,v 1.170 2015/04/26 21:40:48 rtr Exp $ */
+/* $NetBSD: rtsock.c,v 1.171 2015/05/02 17:18:03 rtr Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -61,7 +61,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rtsock.c,v 1.170 2015/04/26 21:40:48 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rtsock.c,v 1.171 2015/05/02 17:18:03 rtr Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -255,7 +255,7 @@ COMPATNAME(route_listen)(struct socket *
}
static int
-COMPATNAME(route_connect)(struct socket *so, struct mbuf *nam, struct lwp *l)
+COMPATNAME(route_connect)(struct socket *so, struct sockaddr *nam, struct lwp *l)
{
KASSERT(solocked(so));
@@ -378,7 +378,7 @@ COMPATNAME(route_recvoob)(struct socket
static int
COMPATNAME(route_send)(struct socket *so, struct mbuf *m,
- struct mbuf *nam, struct mbuf *control, struct lwp *l)
+ struct sockaddr *nam, struct mbuf *control, struct lwp *l)
{
int error = 0;
int s;
Index: src/sys/netatalk/ddp_usrreq.c
diff -u src/sys/netatalk/ddp_usrreq.c:1.67 src/sys/netatalk/ddp_usrreq.c:1.68
--- src/sys/netatalk/ddp_usrreq.c:1.67 Sun Apr 26 21:40:49 2015
+++ src/sys/netatalk/ddp_usrreq.c Sat May 2 17:18:03 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: ddp_usrreq.c,v 1.67 2015/04/26 21:40:49 rtr Exp $ */
+/* $NetBSD: ddp_usrreq.c,v 1.68 2015/05/02 17:18:03 rtr Exp $ */
/*
* Copyright (c) 1990,1991 Regents of The University of Michigan.
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ddp_usrreq.c,v 1.67 2015/04/26 21:40:49 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ddp_usrreq.c,v 1.68 2015/05/02 17:18:03 rtr Exp $");
#include "opt_mbuftrace.h"
@@ -365,7 +365,7 @@ ddp_listen(struct socket *so, struct lwp
}
static int
-ddp_connect(struct socket *so, struct mbuf *nam, struct lwp *l)
+ddp_connect(struct socket *so, struct sockaddr *nam, struct lwp *l)
{
struct ddpcb *ddp = sotoddpcb(so);
int error = 0;
@@ -376,9 +376,7 @@ ddp_connect(struct socket *so, struct mb
if (ddp->ddp_fsat.sat_port != ATADDR_ANYPORT)
return EISCONN;
- if (nam->m_len != sizeof(struct sockaddr_at))
- return EINVAL;
- error = at_pcbconnect(ddp, mtod(nam, struct sockaddr_at *));
+ error = at_pcbconnect(ddp, (struct sockaddr_at *)nam);
if (error == 0)
soisconnected(so);
@@ -479,7 +477,7 @@ ddp_recvoob(struct socket *so, struct mb
}
static int
-ddp_send(struct socket *so, struct mbuf *m, struct mbuf *nam,
+ddp_send(struct socket *so, struct mbuf *m, struct sockaddr *nam,
struct mbuf *control, struct lwp *l)
{
struct ddpcb *ddp = sotoddpcb(so);
@@ -493,9 +491,7 @@ ddp_send(struct socket *so, struct mbuf
if (ddp->ddp_fsat.sat_port != ATADDR_ANYPORT)
return EISCONN;
s = splnet();
- if (nam->m_len != sizeof(struct sockaddr_at))
- return EINVAL;
- error = at_pcbconnect(ddp, mtod(nam, struct sockaddr_at *));
+ error = at_pcbconnect(ddp, (struct sockaddr_at *)nam);
if (error) {
splx(s);
return error;
Index: src/sys/netbt/hci_socket.c
diff -u src/sys/netbt/hci_socket.c:1.43 src/sys/netbt/hci_socket.c:1.44
--- src/sys/netbt/hci_socket.c:1.43 Sun Apr 26 21:40:49 2015
+++ src/sys/netbt/hci_socket.c Sat May 2 17:18:03 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: hci_socket.c,v 1.43 2015/04/26 21:40:49 rtr Exp $ */
+/* $NetBSD: hci_socket.c,v 1.44 2015/05/02 17:18:03 rtr Exp $ */
/*-
* Copyright (c) 2005 Iain Hibbert.
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: hci_socket.c,v 1.43 2015/04/26 21:40:49 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: hci_socket.c,v 1.44 2015/05/02 17:18:03 rtr Exp $");
/* load symbolic names */
#ifdef BLUETOOTH_DEBUG
@@ -526,16 +526,15 @@ hci_listen(struct socket *so, struct lwp
}
static int
-hci_connect(struct socket *so, struct mbuf *nam, struct lwp *l)
+hci_connect(struct socket *so, struct sockaddr *nam, struct lwp *l)
{
struct hci_pcb *pcb = so->so_pcb;
- struct sockaddr_bt *sa;
+ struct sockaddr_bt *sa = (struct sockaddr_bt *)nam;
KASSERT(solocked(so));
KASSERT(pcb != NULL);
KASSERT(nam != NULL);
- sa = mtod(nam, struct sockaddr_bt *);
if (sa->bt_len != sizeof(struct sockaddr_bt))
return EINVAL;
@@ -666,11 +665,11 @@ hci_recvoob(struct socket *so, struct mb
}
static int
-hci_send(struct socket *so, struct mbuf *m, struct mbuf *nam,
+hci_send(struct socket *so, struct mbuf *m, struct sockaddr *nam,
struct mbuf *control, struct lwp *l)
{
struct hci_pcb *pcb = so->so_pcb;
- struct sockaddr_bt * sa = NULL;
+ struct sockaddr_bt * sa = (struct sockaddr_bt *)nam;
int err = 0;
KASSERT(solocked(so));
@@ -680,8 +679,6 @@ hci_send(struct socket *so, struct mbuf
m_freem(control);
if (nam) {
- sa = mtod(nam, struct sockaddr_bt *);
-
if (sa->bt_len != sizeof(struct sockaddr_bt)) {
err = EINVAL;
goto release;
Index: src/sys/netbt/l2cap_socket.c
diff -u src/sys/netbt/l2cap_socket.c:1.34 src/sys/netbt/l2cap_socket.c:1.35
--- src/sys/netbt/l2cap_socket.c:1.34 Sun Apr 26 21:40:49 2015
+++ src/sys/netbt/l2cap_socket.c Sat May 2 17:18:03 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: l2cap_socket.c,v 1.34 2015/04/26 21:40:49 rtr Exp $ */
+/* $NetBSD: l2cap_socket.c,v 1.35 2015/05/02 17:18:03 rtr Exp $ */
/*-
* Copyright (c) 2005 Iain Hibbert.
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: l2cap_socket.c,v 1.34 2015/04/26 21:40:49 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: l2cap_socket.c,v 1.35 2015/05/02 17:18:03 rtr Exp $");
/* load symbolic names */
#ifdef BLUETOOTH_DEBUG
@@ -165,10 +165,10 @@ l2cap_listen(struct socket *so, struct l
}
static int
-l2cap_connect(struct socket *so, struct mbuf *nam, struct lwp *l)
+l2cap_connect(struct socket *so, struct sockaddr *nam, struct lwp *l)
{
struct l2cap_channel *pcb = so->so_pcb;
- struct sockaddr_bt *sa;
+ struct sockaddr_bt *sa = (struct sockaddr_bt *)nam;
KASSERT(solocked(so));
KASSERT(nam != NULL);
@@ -176,7 +176,6 @@ l2cap_connect(struct socket *so, struct
if (pcb == NULL)
return EINVAL;
- sa = mtod(nam, struct sockaddr_bt *);
if (sa->bt_len != sizeof(struct sockaddr_bt))
return EINVAL;
@@ -292,7 +291,7 @@ l2cap_recvoob(struct socket *so, struct
}
static int
-l2cap_send(struct socket *so, struct mbuf *m, struct mbuf *nam,
+l2cap_send(struct socket *so, struct mbuf *m, struct sockaddr *nam,
struct mbuf *control, struct lwp *l)
{
struct l2cap_channel *pcb = so->so_pcb;
Index: src/sys/netbt/rfcomm_socket.c
diff -u src/sys/netbt/rfcomm_socket.c:1.36 src/sys/netbt/rfcomm_socket.c:1.37
--- src/sys/netbt/rfcomm_socket.c:1.36 Sun Apr 26 21:40:49 2015
+++ src/sys/netbt/rfcomm_socket.c Sat May 2 17:18:03 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: rfcomm_socket.c,v 1.36 2015/04/26 21:40:49 rtr Exp $ */
+/* $NetBSD: rfcomm_socket.c,v 1.37 2015/05/02 17:18:03 rtr Exp $ */
/*-
* Copyright (c) 2006 Itronix Inc.
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rfcomm_socket.c,v 1.36 2015/04/26 21:40:49 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rfcomm_socket.c,v 1.37 2015/05/02 17:18:03 rtr Exp $");
/* load symbolic names */
#ifdef BLUETOOTH_DEBUG
@@ -173,10 +173,10 @@ rfcomm_listen(struct socket *so, struct
}
static int
-rfcomm_connect(struct socket *so, struct mbuf *nam, struct lwp *l)
+rfcomm_connect(struct socket *so, struct sockaddr *nam, struct lwp *l)
{
struct rfcomm_dlc *pcb = so->so_pcb;
- struct sockaddr_bt *sa;
+ struct sockaddr_bt *sa = (struct sockaddr_bt *)nam;
KASSERT(solocked(so));
KASSERT(nam != NULL);
@@ -184,7 +184,6 @@ rfcomm_connect(struct socket *so, struct
if (pcb == NULL)
return EINVAL;
- sa = mtod(nam, struct sockaddr_bt *);
if (sa->bt_len != sizeof(struct sockaddr_bt))
return EINVAL;
@@ -307,7 +306,7 @@ rfcomm_recvoob(struct socket *so, struct
}
static int
-rfcomm_send(struct socket *so, struct mbuf *m, struct mbuf *nam,
+rfcomm_send(struct socket *so, struct mbuf *m, struct sockaddr *nam,
struct mbuf *control, struct lwp *l)
{
struct rfcomm_dlc *pcb = so->so_pcb;
Index: src/sys/netbt/sco_socket.c
diff -u src/sys/netbt/sco_socket.c:1.36 src/sys/netbt/sco_socket.c:1.37
--- src/sys/netbt/sco_socket.c:1.36 Sun Apr 26 21:40:49 2015
+++ src/sys/netbt/sco_socket.c Sat May 2 17:18:03 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: sco_socket.c,v 1.36 2015/04/26 21:40:49 rtr Exp $ */
+/* $NetBSD: sco_socket.c,v 1.37 2015/05/02 17:18:03 rtr Exp $ */
/*-
* Copyright (c) 2006 Itronix Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sco_socket.c,v 1.36 2015/04/26 21:40:49 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sco_socket.c,v 1.37 2015/05/02 17:18:03 rtr Exp $");
/* load symbolic names */
#ifdef BLUETOOTH_DEBUG
@@ -156,10 +156,10 @@ sco_listen(struct socket *so, struct lwp
}
static int
-sco_connect(struct socket *so, struct mbuf *nam, struct lwp *l)
+sco_connect(struct socket *so, struct sockaddr *nam, struct lwp *l)
{
struct sco_pcb *pcb = so->so_pcb;
- struct sockaddr_bt *sa;
+ struct sockaddr_bt *sa = (struct sockaddr_bt *)nam;
KASSERT(solocked(so));
KASSERT(nam != NULL);
@@ -167,7 +167,6 @@ sco_connect(struct socket *so, struct mb
if (pcb == NULL)
return EINVAL;
- sa = mtod(nam, struct sockaddr_bt *);
if (sa->bt_len != sizeof(struct sockaddr_bt))
return EINVAL;
@@ -285,7 +284,7 @@ sco_recvoob(struct socket *so, struct mb
}
static int
-sco_send(struct socket *so, struct mbuf *m, struct mbuf *nam,
+sco_send(struct socket *so, struct mbuf *m, struct sockaddr *nam,
struct mbuf *control, struct lwp *l)
{
struct sco_pcb *pcb = so->so_pcb;
Index: src/sys/netinet/dccp_usrreq.c
diff -u src/sys/netinet/dccp_usrreq.c:1.5 src/sys/netinet/dccp_usrreq.c:1.6
--- src/sys/netinet/dccp_usrreq.c:1.5 Mon Apr 27 02:59:44 2015
+++ src/sys/netinet/dccp_usrreq.c Sat May 2 17:18:03 2015
@@ -1,5 +1,5 @@
/* $KAME: dccp_usrreq.c,v 1.67 2005/11/03 16:05:04 nishida Exp $ */
-/* $NetBSD: dccp_usrreq.c,v 1.5 2015/04/27 02:59:44 ozaki-r Exp $ */
+/* $NetBSD: dccp_usrreq.c,v 1.6 2015/05/02 17:18:03 rtr Exp $ */
/*
* Copyright (c) 2003 Joacim H�ggmark, Magnus Erixzon, Nils-Erik Mattsson
@@ -67,7 +67,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: dccp_usrreq.c,v 1.5 2015/04/27 02:59:44 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dccp_usrreq.c,v 1.6 2015/05/02 17:18:03 rtr Exp $");
#include "opt_inet.h"
#include "opt_dccp.h"
@@ -1851,11 +1851,10 @@ dccp_bind(struct socket *so, struct sock
* Called by the connect system call.
*/
static int
-dccp_connect(struct socket *so, struct mbuf *m, struct lwp *l)
+dccp_connect(struct socket *so, struct sockaddr *nam, struct lwp *l)
{
struct inpcb *inp;
struct dccpcb *dp;
- struct sockaddr *nam;
int error;
struct sockaddr_in *sin;
char test[2];
@@ -1889,7 +1888,6 @@ dccp_connect(struct socket *so, struct m
dccpstat.dccps_connattempt++;
- nam = mtod(m, struct sockaddr *);
sin = (struct sockaddr_in *)nam;
if (sin->sin_family == AF_INET
&& IN_MULTICAST(ntohl(sin->sin_addr.s_addr))) {
@@ -1897,7 +1895,7 @@ dccp_connect(struct socket *so, struct m
goto bad;
}
- error = dccp_doconnect(so, m, l, 0);
+ error = dccp_doconnect(so, nam, l, 0);
if (error != 0)
goto bad;
@@ -1931,7 +1929,8 @@ dccp_connect2(struct socket *so, struct
*
*/
int
-dccp_doconnect(struct socket *so, struct mbuf *m, struct lwp *l, int isipv6)
+dccp_doconnect(struct socket *so, struct sockaddr *nam,
+ struct lwp *l, int isipv6)
{
struct inpcb *inp;
#ifdef INET6
@@ -1974,11 +1973,11 @@ dccp_doconnect(struct socket *so, struct
#ifdef INET6
if (isipv6) {
- error = in6_pcbconnect(in6p, m, l);
+ error = in6_pcbconnect(in6p, (struct sockaddr_in6 *)nam, l);
DCCP_DEBUG((LOG_INFO, "in6_pcbconnect=%d\n",error));
} else
#endif
- error = in_pcbconnect(inp, m, l);
+ error = in_pcbconnect(inp, (struct sockaddr_in *)nam, l);
if (error) {
DCCP_DEBUG((LOG_INFO, "in_pcbconnect=%d\n",error));
return error;
@@ -2112,12 +2111,11 @@ dccp_disconnect2(struct dccpcb *dp)
}
int
-dccp_send(struct socket *so, struct mbuf *m, struct mbuf *nam,
+dccp_send(struct socket *so, struct mbuf *m, struct sockaddr *addr,
struct mbuf *control, struct lwp *l)
{
struct inpcb *inp;
struct dccpcb *dp;
- struct sockaddr *addr;
int error = 0;
int isipv6 = 0;
@@ -2131,11 +2129,6 @@ dccp_send(struct socket *so, struct mbuf
return EINVAL;
}
- if (nam == 0)
- addr = NULL;
- else
- addr = mtod(nam, struct sockaddr *);
-
#ifdef INET6
isipv6 = addr && addr->sa_family == AF_INET6;
#endif
@@ -2197,7 +2190,7 @@ dccp_send(struct socket *so, struct mbuf
dp->pktcnt ++;
if (addr && dp->state == DCCPS_CLOSED) {
- error = dccp_doconnect(so, nam, l, isipv6);
+ error = dccp_doconnect(so, addr, l, isipv6);
if (error)
goto out;
}
Index: src/sys/netinet/dccp_var.h
diff -u src/sys/netinet/dccp_var.h:1.1 src/sys/netinet/dccp_var.h:1.2
--- src/sys/netinet/dccp_var.h:1.1 Tue Feb 10 19:11:52 2015
+++ src/sys/netinet/dccp_var.h Sat May 2 17:18:03 2015
@@ -1,5 +1,5 @@
/* $KAME: dccp_var.h,v 1.29 2005/11/03 14:59:28 nishida Exp $ */
-/* $NetBSD: dccp_var.h,v 1.1 2015/02/10 19:11:52 rjs Exp $ */
+/* $NetBSD: dccp_var.h,v 1.2 2015/05/02 17:18:03 rtr Exp $ */
/*
* Copyright (c) 2003 Joacim H�ggmark, Magnus Erixzon, Nils-Erik Mattsson
@@ -306,14 +306,14 @@ struct dccpcb *
dccp_newdccpcb(int, void *);
int dccp_shutdown(struct socket *);
int dccp_output(struct dccpcb *, u_int8_t);
-int dccp_doconnect(struct socket *, struct mbuf *, struct lwp *, int);
+int dccp_doconnect(struct socket *, struct sockaddr *, struct lwp *, int);
int dccp_add_option(struct dccpcb *, u_int8_t, char *, u_int8_t);
int dccp_add_feature(struct dccpcb *, u_int8_t, u_int8_t, char *, u_int8_t);
int dccp_detach(struct socket *);
int dccp_attach(struct socket *, int);
int dccp_abort(struct socket *);
int dccp_disconnect(struct socket *);
-int dccp_send(struct socket *, struct mbuf *, struct mbuf *,
+int dccp_send(struct socket *, struct mbuf *, struct sockaddr *,
struct mbuf *, struct lwp *);
void dccp_retrans_t(void *);
void dccp_connect_t(void *);
Index: src/sys/netinet/in_pcb.c
diff -u src/sys/netinet/in_pcb.c:1.159 src/sys/netinet/in_pcb.c:1.160
--- src/sys/netinet/in_pcb.c:1.159 Sat May 2 14:41:32 2015
+++ src/sys/netinet/in_pcb.c Sat May 2 17:18:03 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: in_pcb.c,v 1.159 2015/05/02 14:41:32 roy Exp $ */
+/* $NetBSD: in_pcb.c,v 1.160 2015/05/02 17:18:03 rtr Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -93,7 +93,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: in_pcb.c,v 1.159 2015/05/02 14:41:32 roy Exp $");
+__KERNEL_RCSID(0, "$NetBSD: in_pcb.c,v 1.160 2015/05/02 17:18:03 rtr Exp $");
#include "opt_inet.h"
#include "opt_ipsec.h"
@@ -443,26 +443,38 @@ in_pcbbind(void *v, struct sockaddr_in *
}
/*
+ * adapter function that accepts nam as mbuf for in_pcbconnect()
+ */
+int
+in_pcbconnect_m(void *v, struct mbuf *nam, struct lwp *l)
+{
+ struct sockaddr_in *sin = mtod(nam, struct sockaddr_in *);
+
+ if (sizeof (*sin) != nam->m_len) {
+ return EINVAL;
+ }
+
+ return in_pcbconnect(v, sin, l);
+}
+
+/*
* Connect from a socket to a specified address.
* Both address and port must be specified in argument sin.
* If don't have a local address for this socket yet,
* then pick one.
*/
int
-in_pcbconnect(void *v, struct mbuf *nam, struct lwp *l)
+in_pcbconnect(void *v, struct sockaddr_in *sin, struct lwp *l)
{
struct inpcb *inp = v;
struct in_ifaddr *ia = NULL;
struct sockaddr_in *ifaddr = NULL;
- struct sockaddr_in *sin = mtod(nam, struct sockaddr_in *);
vestigial_inpcb_t vestige;
int error;
if (inp->inp_af != AF_INET)
return (EINVAL);
- if (nam->m_len != sizeof (*sin))
- return (EINVAL);
if (sin->sin_len != sizeof (*sin))
return (EINVAL);
if (sin->sin_family != AF_INET)
Index: src/sys/netinet/in_pcb.h
diff -u src/sys/netinet/in_pcb.h:1.57 src/sys/netinet/in_pcb.h:1.58
--- src/sys/netinet/in_pcb.h:1.57 Fri Apr 24 22:32:37 2015
+++ src/sys/netinet/in_pcb.h Sat May 2 17:18:03 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: in_pcb.h,v 1.57 2015/04/24 22:32:37 rtr Exp $ */
+/* $NetBSD: in_pcb.h,v 1.58 2015/05/02 17:18:03 rtr Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -132,7 +132,8 @@ struct inpcb {
void in_losing(struct inpcb *);
int in_pcballoc(struct socket *, void *);
int in_pcbbind(void *, struct sockaddr_in *, struct lwp *);
-int in_pcbconnect(void *, struct mbuf *, struct lwp *);
+int in_pcbconnect(void *, struct sockaddr_in *, struct lwp *);
+int in_pcbconnect_m(void *, struct mbuf *, struct lwp *);
void in_pcbdetach(void *);
void in_pcbdisconnect(void *);
void in_pcbinit(struct inpcbtable *, int, int);
Index: src/sys/netinet/raw_ip.c
diff -u src/sys/netinet/raw_ip.c:1.151 src/sys/netinet/raw_ip.c:1.152
--- src/sys/netinet/raw_ip.c:1.151 Sat May 2 14:41:32 2015
+++ src/sys/netinet/raw_ip.c Sat May 2 17:18:03 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: raw_ip.c,v 1.151 2015/05/02 14:41:32 roy Exp $ */
+/* $NetBSD: raw_ip.c,v 1.152 2015/05/02 17:18:03 rtr Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -65,7 +65,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: raw_ip.c,v 1.151 2015/05/02 14:41:32 roy Exp $");
+__KERNEL_RCSID(0, "$NetBSD: raw_ip.c,v 1.152 2015/05/02 17:18:03 rtr Exp $");
#include "opt_inet.h"
#include "opt_compat_netbsd.h"
@@ -607,7 +607,7 @@ rip_listen(struct socket *so, struct lwp
}
static int
-rip_connect(struct socket *so, struct mbuf *nam, struct lwp *l)
+rip_connect(struct socket *so, struct sockaddr *nam, struct lwp *l)
{
struct inpcb *inp = sotoinpcb(so);
int error = 0;
@@ -618,9 +618,7 @@ rip_connect(struct socket *so, struct mb
KASSERT(nam != NULL);
s = splsoftnet();
- if (nam->m_len != sizeof(struct sockaddr_in))
- return EINVAL;
- error = rip_connect_pcb(inp, mtod(nam, struct sockaddr_in *));
+ error = rip_connect_pcb(inp, (struct sockaddr_in *)nam);
if (! error)
soisconnected(so);
splx(s);
@@ -744,7 +742,7 @@ rip_recvoob(struct socket *so, struct mb
}
static int
-rip_send(struct socket *so, struct mbuf *m, struct mbuf *nam,
+rip_send(struct socket *so, struct mbuf *m, struct sockaddr *nam,
struct mbuf *control, struct lwp *l)
{
struct inpcb *inp = sotoinpcb(so);
@@ -771,9 +769,7 @@ rip_send(struct socket *so, struct mbuf
error = EISCONN;
goto die;
}
- if (nam->m_len != sizeof(struct sockaddr_in))
- return EINVAL;
- error = rip_connect_pcb(inp, mtod(nam, struct sockaddr_in *));
+ error = rip_connect_pcb(inp, (struct sockaddr_in *)nam);
if (error) {
die:
m_freem(m);
Index: src/sys/netinet/tcp_input.c
diff -u src/sys/netinet/tcp_input.c:1.338 src/sys/netinet/tcp_input.c:1.339
--- src/sys/netinet/tcp_input.c:1.338 Mon Apr 27 02:59:44 2015
+++ src/sys/netinet/tcp_input.c Sat May 2 17:18:03 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tcp_input.c,v 1.338 2015/04/27 02:59:44 ozaki-r Exp $ */
+/* $NetBSD: tcp_input.c,v 1.339 2015/05/02 17:18:03 rtr Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -148,7 +148,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tcp_input.c,v 1.338 2015/04/27 02:59:44 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tcp_input.c,v 1.339 2015/05/02 17:18:03 rtr Exp $");
#include "opt_inet.h"
#include "opt_ipsec.h"
@@ -4076,7 +4076,7 @@ syn_cache_get(struct sockaddr *src, stru
am->m_len = src->sa_len;
bcopy(src, mtod(am, void *), src->sa_len);
if (inp) {
- if (in_pcbconnect(inp, am, &lwp0)) {
+ if (in_pcbconnect_m(inp, am, &lwp0)) {
(void) m_free(am);
goto resetandabort;
}
@@ -4097,7 +4097,7 @@ syn_cache_get(struct sockaddr *src, stru
&sin6->sin6_addr.s6_addr32[3],
sizeof(sin6->sin6_addr.s6_addr32[3]));
}
- if (in6_pcbconnect(in6p, am, NULL)) {
+ if (in6_pcbconnect_m(in6p, am, NULL)) {
(void) m_free(am);
goto resetandabort;
}
Index: src/sys/netinet/tcp_usrreq.c
diff -u src/sys/netinet/tcp_usrreq.c:1.207 src/sys/netinet/tcp_usrreq.c:1.208
--- src/sys/netinet/tcp_usrreq.c:1.207 Sun Apr 26 21:40:49 2015
+++ src/sys/netinet/tcp_usrreq.c Sat May 2 17:18:03 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tcp_usrreq.c,v 1.207 2015/04/26 21:40:49 rtr Exp $ */
+/* $NetBSD: tcp_usrreq.c,v 1.208 2015/05/02 17:18:03 rtr Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -99,7 +99,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tcp_usrreq.c,v 1.207 2015/04/26 21:40:49 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tcp_usrreq.c,v 1.208 2015/05/02 17:18:03 rtr Exp $");
#include "opt_inet.h"
#include "opt_tcp_debug.h"
@@ -765,7 +765,7 @@ release:
}
static int
-tcp_connect(struct socket *so, struct mbuf *nam, struct lwp *l)
+tcp_connect(struct socket *so, struct sockaddr *nam, struct lwp *l)
{
struct inpcb *inp = NULL;
struct in6pcb *in6p = NULL;
@@ -794,7 +794,7 @@ tcp_connect(struct socket *so, struct mb
if (error)
goto release;
}
- error = in_pcbconnect(inp, nam, l);
+ error = in_pcbconnect(inp, (struct sockaddr_in *)nam, l);
}
#endif
#ifdef INET6
@@ -804,7 +804,7 @@ tcp_connect(struct socket *so, struct mb
if (error)
goto release;
}
- error = in6_pcbconnect(in6p, nam, l);
+ error = in6_pcbconnect(in6p, (struct sockaddr_in6 *)nam, l);
if (!error) {
/* mapped addr case */
if (IN6_IS_ADDR_V4MAPPED(&in6p->in6p_faddr))
@@ -1125,7 +1125,7 @@ tcp_recvoob(struct socket *so, struct mb
}
static int
-tcp_send(struct socket *so, struct mbuf *m, struct mbuf *nam,
+tcp_send(struct socket *so, struct mbuf *m, struct sockaddr *nam,
struct mbuf *control, struct lwp *l)
{
struct inpcb *inp = NULL;
Index: src/sys/netinet/udp_usrreq.c
diff -u src/sys/netinet/udp_usrreq.c:1.220 src/sys/netinet/udp_usrreq.c:1.221
--- src/sys/netinet/udp_usrreq.c:1.220 Sun Apr 26 21:40:49 2015
+++ src/sys/netinet/udp_usrreq.c Sat May 2 17:18:03 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: udp_usrreq.c,v 1.220 2015/04/26 21:40:49 rtr Exp $ */
+/* $NetBSD: udp_usrreq.c,v 1.221 2015/05/02 17:18:03 rtr Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -66,7 +66,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: udp_usrreq.c,v 1.220 2015/04/26 21:40:49 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: udp_usrreq.c,v 1.221 2015/05/02 17:18:03 rtr Exp $");
#include "opt_inet.h"
#include "opt_compat_netbsd.h"
@@ -932,7 +932,7 @@ udp_listen(struct socket *so, struct lwp
}
static int
-udp_connect(struct socket *so, struct mbuf *nam, struct lwp *l)
+udp_connect(struct socket *so, struct sockaddr *nam, struct lwp *l)
{
struct inpcb *inp = sotoinpcb(so);
int error = 0;
@@ -943,7 +943,7 @@ udp_connect(struct socket *so, struct mb
KASSERT(nam != NULL);
s = splsoftnet();
- error = in_pcbconnect(inp, nam, l);
+ error = in_pcbconnect(inp, (struct sockaddr_in *)nam, l);
if (! error)
soisconnected(so);
splx(s);
@@ -1066,7 +1066,7 @@ udp_recvoob(struct socket *so, struct mb
}
static int
-udp_send(struct socket *so, struct mbuf *m, struct mbuf *nam,
+udp_send(struct socket *so, struct mbuf *m, struct sockaddr *nam,
struct mbuf *control, struct lwp *l)
{
struct inpcb *inp = sotoinpcb(so);
@@ -1093,7 +1093,7 @@ udp_send(struct socket *so, struct mbuf
error = EISCONN;
goto die;
}
- error = in_pcbconnect(inp, nam, l);
+ error = in_pcbconnect(inp, (struct sockaddr_in *)nam, l);
if (error)
goto die;
} else {
Index: src/sys/netinet6/dccp6_usrreq.c
diff -u src/sys/netinet6/dccp6_usrreq.c:1.5 src/sys/netinet6/dccp6_usrreq.c:1.6
--- src/sys/netinet6/dccp6_usrreq.c:1.5 Sun Apr 26 21:40:49 2015
+++ src/sys/netinet6/dccp6_usrreq.c Sat May 2 17:18:03 2015
@@ -1,5 +1,5 @@
/* $KAME: dccp6_usrreq.c,v 1.13 2005/07/27 08:42:56 nishida Exp $ */
-/* $NetBSD: dccp6_usrreq.c,v 1.5 2015/04/26 21:40:49 rtr Exp $ */
+/* $NetBSD: dccp6_usrreq.c,v 1.6 2015/05/02 17:18:03 rtr Exp $ */
/*
* Copyright (C) 2003 WIDE Project.
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: dccp6_usrreq.c,v 1.5 2015/04/26 21:40:49 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dccp6_usrreq.c,v 1.6 2015/05/02 17:18:03 rtr Exp $");
#include "opt_inet.h"
#include "opt_dccp.h"
@@ -143,13 +143,12 @@ dccp6_bind(struct socket *so, struct soc
}
int
-dccp6_connect(struct socket *so, struct mbuf *m, struct lwp *l)
+dccp6_connect(struct socket *so, struct sockaddr *nam, struct lwp *l)
{
struct in6pcb *in6p;
struct dccpcb *dp;
int error;
struct sockaddr_in6 *sin6;
- struct sockaddr *nam;
char test[2];
DCCP_DEBUG((LOG_INFO, "Entering dccp6_connect!\n"));
@@ -187,7 +186,6 @@ dccp6_connect(struct socket *so, struct
dp->who = DCCP_CLIENT;
dp->seq_snd = (((u_int64_t)random() << 32) | random()) % 281474976710656LL;
- nam = mtod(m, struct sockaddr *);
sin6 = (struct sockaddr_in6 *)nam;
if (sin6->sin6_family == AF_INET6
&& IN6_IS_ADDR_MULTICAST(&sin6->sin6_addr)) {
@@ -198,7 +196,7 @@ dccp6_connect(struct socket *so, struct
dp->inp_vflag &= ~INP_IPV4;
dp->inp_vflag |= INP_IPV6;
- error = dccp_doconnect(so, m, l, 1);
+ error = dccp_doconnect(so, nam, l, 1);
if (error != 0)
goto bad;
@@ -407,7 +405,7 @@ dccp6_rcvd(struct socket *so, int flags,
}
static int
-dccp6_send(struct socket *so, struct mbuf *m, struct mbuf *nam,
+dccp6_send(struct socket *so, struct mbuf *m, struct sockaddr *nam,
struct mbuf *control, struct lwp *l)
{
return dccp_send(so, m, nam, control, l);
Index: src/sys/netinet6/dccp6_var.h
diff -u src/sys/netinet6/dccp6_var.h:1.3 src/sys/netinet6/dccp6_var.h:1.4
--- src/sys/netinet6/dccp6_var.h:1.3 Sat Apr 25 14:56:05 2015
+++ src/sys/netinet6/dccp6_var.h Sat May 2 17:18:03 2015
@@ -1,5 +1,5 @@
/* $KAME: dccp6_var.h,v 1.3 2003/11/18 04:55:43 ono Exp $ */
-/* $NetBSD: dccp6_var.h,v 1.3 2015/04/25 14:56:05 rtr Exp $ */
+/* $NetBSD: dccp6_var.h,v 1.4 2015/05/02 17:18:03 rtr Exp $ */
/*
* Copyright (c) 2003 Joacim H�ggmark
@@ -45,7 +45,7 @@ int dccp6_usrreq(struct socket *, int, s
struct mbuf *, struct lwp *);
int dccp6_bind(struct socket *, struct sockaddr *, struct lwp *);
int dccp6_listen(struct socket *, struct lwp *);
-int dccp6_connect(struct socket *, struct mbuf *, struct lwp *);
+int dccp6_connect(struct socket *, struct sockaddr *, struct lwp *);
int dccp6_accept(struct socket *, struct sockaddr *);
#endif
Index: src/sys/netinet6/in6_pcb.c
diff -u src/sys/netinet6/in6_pcb.c:1.139 src/sys/netinet6/in6_pcb.c:1.140
--- src/sys/netinet6/in6_pcb.c:1.139 Mon Apr 27 10:14:44 2015
+++ src/sys/netinet6/in6_pcb.c Sat May 2 17:18:03 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: in6_pcb.c,v 1.139 2015/04/27 10:14:44 ozaki-r Exp $ */
+/* $NetBSD: in6_pcb.c,v 1.140 2015/05/02 17:18:03 rtr Exp $ */
/* $KAME: in6_pcb.c,v 1.84 2001/02/08 18:02:08 itojun Exp $ */
/*
@@ -62,7 +62,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: in6_pcb.c,v 1.139 2015/04/27 10:14:44 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: in6_pcb.c,v 1.140 2015/05/02 17:18:03 rtr Exp $");
#include "opt_inet.h"
#include "opt_ipsec.h"
@@ -418,17 +418,31 @@ in6_pcbbind(void *v, struct sockaddr_in6
}
/*
+ * adapter function that accepts nam as mbuf for in6_pcbconnect
+ */
+int
+in6_pcbconnect_m(void *v, struct mbuf *nam, struct lwp *l)
+{
+ struct sockaddr_in6 *sin6 = mtod(nam, struct sockaddr_in6 *);
+
+ if (sizeof (*sin6) != nam->m_len) {
+ return EINVAL;
+ }
+
+ return in6_pcbconnect(v, sin6, l);
+}
+
+/*
* Connect from a socket to a specified address.
* Both address and port must be specified in argument sin6.
* If don't have a local address for this socket yet,
* then pick one.
*/
int
-in6_pcbconnect(void *v, struct mbuf *nam, struct lwp *l)
+in6_pcbconnect(void *v, struct sockaddr_in6 *sin6, struct lwp *l)
{
struct in6pcb *in6p = v;
struct in6_addr *in6a = NULL;
- struct sockaddr_in6 *sin6 = mtod(nam, struct sockaddr_in6 *);
struct ifnet *ifp = NULL; /* outgoing interface */
int error = 0;
int scope_ambiguous = 0;
@@ -443,8 +457,6 @@ in6_pcbconnect(void *v, struct mbuf *nam
if (in6p->in6p_af != AF_INET6)
return (EINVAL);
- if (nam->m_len != sizeof(*sin6))
- return (EINVAL);
if (sin6->sin6_len != sizeof(*sin6))
return (EINVAL);
if (sin6->sin6_family != AF_INET6)
Index: src/sys/netinet6/raw_ip6.c
diff -u src/sys/netinet6/raw_ip6.c:1.139 src/sys/netinet6/raw_ip6.c:1.140
--- src/sys/netinet6/raw_ip6.c:1.139 Sun Apr 26 21:40:49 2015
+++ src/sys/netinet6/raw_ip6.c Sat May 2 17:18:03 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: raw_ip6.c,v 1.139 2015/04/26 21:40:49 rtr Exp $ */
+/* $NetBSD: raw_ip6.c,v 1.140 2015/05/02 17:18:03 rtr Exp $ */
/* $KAME: raw_ip6.c,v 1.82 2001/07/23 18:57:56 jinmei Exp $ */
/*
@@ -62,7 +62,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: raw_ip6.c,v 1.139 2015/04/26 21:40:49 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: raw_ip6.c,v 1.140 2015/05/02 17:18:03 rtr Exp $");
#include "opt_ipsec.h"
@@ -698,10 +698,10 @@ rip6_listen(struct socket *so, struct lw
}
static int
-rip6_connect(struct socket *so, struct mbuf *nam, struct lwp *l)
+rip6_connect(struct socket *so, struct sockaddr *nam, struct lwp *l)
{
struct in6pcb *in6p = sotoin6pcb(so);
- struct sockaddr_in6 *addr;
+ struct sockaddr_in6 *addr = (struct sockaddr_in6 *)nam;
struct in6_addr *in6a = NULL;
struct ifnet *ifp = NULL;
int scope_ambiguous = 0;
@@ -711,10 +711,6 @@ rip6_connect(struct socket *so, struct m
KASSERT(in6p != NULL);
KASSERT(nam != NULL);
- addr = mtod(nam, struct sockaddr_in6 *);
-
- if (nam->m_len != sizeof(*addr))
- return EINVAL;
if (IFNET_EMPTY())
return EADDRNOTAVAIL;
if (addr->sin6_family != AF_INET6)
@@ -853,7 +849,7 @@ rip6_recvoob(struct socket *so, struct m
}
static int
-rip6_send(struct socket *so, struct mbuf *m, struct mbuf *nam,
+rip6_send(struct socket *so, struct mbuf *m, struct sockaddr *nam,
struct mbuf *control, struct lwp *l)
{
struct in6pcb *in6p = sotoin6pcb(so);
@@ -884,12 +880,7 @@ rip6_send(struct socket *so, struct mbuf
error = ENOTCONN;
goto release;
}
- if (nam->m_len != sizeof(tmp)) {
- error = EINVAL;
- goto release;
- }
-
- tmp = *mtod(nam, struct sockaddr_in6 *);
+ tmp = *(struct sockaddr_in6 *)nam;
dst = &tmp;
if (dst->sin6_family != AF_INET6) {
Index: src/sys/netinet6/in6_pcb.h
diff -u src/sys/netinet6/in6_pcb.h:1.44 src/sys/netinet6/in6_pcb.h:1.45
--- src/sys/netinet6/in6_pcb.h:1.44 Mon Apr 27 02:59:44 2015
+++ src/sys/netinet6/in6_pcb.h Sat May 2 17:18:03 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: in6_pcb.h,v 1.44 2015/04/27 02:59:44 ozaki-r Exp $ */
+/* $NetBSD: in6_pcb.h,v 1.45 2015/05/02 17:18:03 rtr Exp $ */
/* $KAME: in6_pcb.h,v 1.45 2001/02/09 05:59:46 itojun Exp $ */
/*
@@ -157,7 +157,8 @@ void in6_losing(struct in6pcb *);
void in6_pcbinit(struct inpcbtable *, int, int);
int in6_pcballoc(struct socket *, void *);
int in6_pcbbind(void *, struct sockaddr_in6 *, struct lwp *);
-int in6_pcbconnect(void *, struct mbuf *, struct lwp *);
+int in6_pcbconnect(void *, struct sockaddr_in6 *, struct lwp *);
+int in6_pcbconnect_m(void *, struct mbuf *, struct lwp *);
void in6_pcbdetach(struct in6pcb *);
void in6_pcbdisconnect(struct in6pcb *);
struct in6pcb *in6_pcblookup_port(struct inpcbtable *, struct in6_addr *,
Index: src/sys/netinet6/udp6_output.c
diff -u src/sys/netinet6/udp6_output.c:1.48 src/sys/netinet6/udp6_output.c:1.49
--- src/sys/netinet6/udp6_output.c:1.48 Mon Apr 27 02:59:44 2015
+++ src/sys/netinet6/udp6_output.c Sat May 2 17:18:03 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: udp6_output.c,v 1.48 2015/04/27 02:59:44 ozaki-r Exp $ */
+/* $NetBSD: udp6_output.c,v 1.49 2015/05/02 17:18:03 rtr Exp $ */
/* $KAME: udp6_output.c,v 1.43 2001/10/15 09:19:52 itojun Exp $ */
/*
@@ -62,7 +62,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: udp6_output.c,v 1.48 2015/04/27 02:59:44 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: udp6_output.c,v 1.49 2015/05/02 17:18:03 rtr Exp $");
#include "opt_inet.h"
@@ -111,7 +111,7 @@ __KERNEL_RCSID(0, "$NetBSD: udp6_output.
int
udp6_output(struct in6pcb * const in6p, struct mbuf *m,
- struct mbuf * const addr6, struct mbuf * const control,
+ struct sockaddr_in6 * const addr6, struct mbuf * const control,
struct lwp * const l)
{
u_int32_t ulen = m->m_pkthdr.len;
@@ -136,11 +136,7 @@ udp6_output(struct in6pcb * const in6p,
struct sockaddr_in6 tmp;
if (addr6) {
- if (addr6->m_len != sizeof(*sin6)) {
- error = EINVAL;
- goto release;
- }
- sin6 = mtod(addr6, struct sockaddr_in6 *);
+ sin6 = addr6;
if (sin6->sin6_family != AF_INET6) {
error = EAFNOSUPPORT;
goto release;
Index: src/sys/netinet6/udp6_usrreq.c
diff -u src/sys/netinet6/udp6_usrreq.c:1.119 src/sys/netinet6/udp6_usrreq.c:1.120
--- src/sys/netinet6/udp6_usrreq.c:1.119 Sun Apr 26 21:40:49 2015
+++ src/sys/netinet6/udp6_usrreq.c Sat May 2 17:18:03 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: udp6_usrreq.c,v 1.119 2015/04/26 21:40:49 rtr Exp $ */
+/* $NetBSD: udp6_usrreq.c,v 1.120 2015/05/02 17:18:03 rtr Exp $ */
/* $KAME: udp6_usrreq.c,v 1.86 2001/05/27 17:33:00 itojun Exp $ */
/*
@@ -62,7 +62,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: udp6_usrreq.c,v 1.119 2015/04/26 21:40:49 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: udp6_usrreq.c,v 1.120 2015/05/02 17:18:03 rtr Exp $");
#include "opt_inet.h"
#include "opt_inet_csum.h"
@@ -721,7 +721,7 @@ udp6_listen(struct socket *so, struct lw
}
static int
-udp6_connect(struct socket *so, struct mbuf *nam, struct lwp *l)
+udp6_connect(struct socket *so, struct sockaddr *nam, struct lwp *l)
{
struct in6pcb *in6p = sotoin6pcb(so);
int error = 0;
@@ -733,7 +733,7 @@ udp6_connect(struct socket *so, struct m
if (!IN6_IS_ADDR_UNSPECIFIED(&in6p->in6p_faddr))
return EISCONN;
s = splsoftnet();
- error = in6_pcbconnect(in6p, nam, l);
+ error = in6_pcbconnect(in6p, (struct sockaddr_in6 *)nam, l);
splx(s);
if (error == 0)
soisconnected(so);
@@ -863,7 +863,7 @@ udp6_recvoob(struct socket *so, struct m
}
static int
-udp6_send(struct socket *so, struct mbuf *m, struct mbuf *nam,
+udp6_send(struct socket *so, struct mbuf *m, struct sockaddr *nam,
struct mbuf *control, struct lwp *l)
{
struct in6pcb *in6p = sotoin6pcb(so);
@@ -875,7 +875,7 @@ udp6_send(struct socket *so, struct mbuf
KASSERT(m != NULL);
s = splsoftnet();
- error = udp6_output(in6p, m, nam, control, l);
+ error = udp6_output(in6p, m, (struct sockaddr_in6 *)nam, control, l);
splx(s);
return error;
Index: src/sys/netinet6/udp6_var.h
diff -u src/sys/netinet6/udp6_var.h:1.27 src/sys/netinet6/udp6_var.h:1.28
--- src/sys/netinet6/udp6_var.h:1.27 Thu May 22 22:56:53 2014
+++ src/sys/netinet6/udp6_var.h Sat May 2 17:18:03 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: udp6_var.h,v 1.27 2014/05/22 22:56:53 rmind Exp $ */
+/* $NetBSD: udp6_var.h,v 1.28 2015/05/02 17:18:03 rtr Exp $ */
/* $KAME: udp6_var.h,v 1.11 2000/06/05 00:14:31 itojun Exp $ */
/*
@@ -106,7 +106,7 @@ void *udp6_ctlinput(int, const struct so
int udp6_ctloutput(int, struct socket *, struct sockopt *);
void udp6_init(void);
int udp6_input(struct mbuf **, int *, int);
-int udp6_output(struct in6pcb *, struct mbuf *, struct mbuf *,
+int udp6_output(struct in6pcb *, struct mbuf *, struct sockaddr_in6 *,
struct mbuf *, struct lwp *);
int udp6_sysctl(int *, u_int, void *, size_t *, void *, size_t);
int udp6_usrreq(struct socket *, int, struct mbuf *, struct mbuf *,
Index: src/sys/netipsec/keysock.c
diff -u src/sys/netipsec/keysock.c:1.47 src/sys/netipsec/keysock.c:1.48
--- src/sys/netipsec/keysock.c:1.47 Sun Apr 26 21:40:49 2015
+++ src/sys/netipsec/keysock.c Sat May 2 17:18:04 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: keysock.c,v 1.47 2015/04/26 21:40:49 rtr Exp $ */
+/* $NetBSD: keysock.c,v 1.48 2015/05/02 17:18:04 rtr Exp $ */
/* $FreeBSD: src/sys/netipsec/keysock.c,v 1.3.2.1 2003/01/24 05:11:36 sam Exp $ */
/* $KAME: keysock.c,v 1.25 2001/08/13 20:07:41 itojun Exp $ */
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: keysock.c,v 1.47 2015/04/26 21:40:49 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: keysock.c,v 1.48 2015/05/02 17:18:04 rtr Exp $");
/* This code has derived from sys/net/rtsock.c on FreeBSD2.2.5 */
@@ -509,7 +509,7 @@ key_listen(struct socket *so, struct lwp
}
static int
-key_connect(struct socket *so, struct mbuf *nam, struct lwp *l)
+key_connect(struct socket *so, struct sockaddr *nam, struct lwp *l)
{
KASSERT(solocked(so));
@@ -631,7 +631,7 @@ key_recvoob(struct socket *so, struct mb
}
static int
-key_send(struct socket *so, struct mbuf *m, struct mbuf *nam,
+key_send(struct socket *so, struct mbuf *m, struct sockaddr *nam,
struct mbuf *control, struct lwp *l)
{
int error = 0;
Index: src/sys/netmpls/mpls_proto.c
diff -u src/sys/netmpls/mpls_proto.c:1.27 src/sys/netmpls/mpls_proto.c:1.28
--- src/sys/netmpls/mpls_proto.c:1.27 Sun Apr 26 21:40:49 2015
+++ src/sys/netmpls/mpls_proto.c Sat May 2 17:18:04 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: mpls_proto.c,v 1.27 2015/04/26 21:40:49 rtr Exp $ */
+/* $NetBSD: mpls_proto.c,v 1.28 2015/05/02 17:18:04 rtr Exp $ */
/*
* Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mpls_proto.c,v 1.27 2015/04/26 21:40:49 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mpls_proto.c,v 1.28 2015/05/02 17:18:04 rtr Exp $");
#include "opt_inet.h"
#include "opt_mbuftrace.h"
@@ -119,7 +119,7 @@ mpls_listen(struct socket *so, struct lw
}
static int
-mpls_connect(struct socket *so, struct mbuf *nam, struct lwp *l)
+mpls_connect(struct socket *so, struct sockaddr *nam, struct lwp *l)
{
KASSERT(solocked(so));
@@ -205,7 +205,7 @@ mpls_recvoob(struct socket *so, struct m
}
static int
-mpls_send(struct socket *so, struct mbuf *m, struct mbuf *nam,
+mpls_send(struct socket *so, struct mbuf *m, struct sockaddr *nam,
struct mbuf *control, struct lwp *l)
{
KASSERT(solocked(so));
Index: src/sys/netnatm/natm.c
diff -u src/sys/netnatm/natm.c:1.48 src/sys/netnatm/natm.c:1.49
--- src/sys/netnatm/natm.c:1.48 Sun Apr 26 21:40:49 2015
+++ src/sys/netnatm/natm.c Sat May 2 17:18:04 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: natm.c,v 1.48 2015/04/26 21:40:49 rtr Exp $ */
+/* $NetBSD: natm.c,v 1.49 2015/05/02 17:18:04 rtr Exp $ */
/*
* Copyright (c) 1996 Charles D. Cranor and Washington University.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: natm.c,v 1.48 2015/04/26 21:40:49 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: natm.c,v 1.49 2015/05/02 17:18:04 rtr Exp $");
#include <sys/param.h>
#include <sys/kmem.h>
@@ -122,11 +122,11 @@ natm_listen(struct socket *so, struct lw
}
static int
-natm_connect(struct socket *so, struct mbuf *nam, struct lwp *l)
+natm_connect(struct socket *so, struct sockaddr *nam, struct lwp *l)
{
int error = 0, s2;
struct natmpcb *npcb;
- struct sockaddr_natm *snatm;
+ struct sockaddr_natm *snatm = (struct sockaddr_natm *)nam;
struct atm_pseudoioctl api;
struct atm_pseudohdr *aph;
struct ifnet *ifp;
@@ -138,9 +138,6 @@ natm_connect(struct socket *so, struct m
* validate nam and npcb
*/
- if (nam->m_len != sizeof(*snatm))
- return EINVAL;
- snatm = mtod(nam, struct sockaddr_natm *);
if (snatm->snatm_len != sizeof(*snatm) ||
(npcb->npcb_flags & NPCB_FREE) == 0)
return EINVAL;
@@ -342,7 +339,7 @@ natm_recvoob(struct socket *so, struct m
}
static int
-natm_send(struct socket *so, struct mbuf *m, struct mbuf *nam,
+natm_send(struct socket *so, struct mbuf *m, struct sockaddr *nam,
struct mbuf *control)
{
struct natmpcb *npcb = (struct natmpcb *) so->so_pcb;
Index: src/sys/netsmb/smb_trantcp.c
diff -u src/sys/netsmb/smb_trantcp.c:1.47 src/sys/netsmb/smb_trantcp.c:1.48
--- src/sys/netsmb/smb_trantcp.c:1.47 Mon May 19 02:51:25 2014
+++ src/sys/netsmb/smb_trantcp.c Sat May 2 17:18:04 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: smb_trantcp.c,v 1.47 2014/05/19 02:51:25 rmind Exp $ */
+/* $NetBSD: smb_trantcp.c,v 1.48 2015/05/02 17:18:04 rtr Exp $ */
/*-
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -61,7 +61,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: smb_trantcp.c,v 1.47 2014/05/19 02:51:25 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: smb_trantcp.c,v 1.48 2015/05/02 17:18:04 rtr Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -185,7 +185,7 @@ nb_connect_in(struct nbpcb *nbp, struct
*mtod(m, struct sockaddr *) = *(struct sockaddr *)to;
m->m_len = sizeof(struct sockaddr);
solock(so);
- error = soconnect(so, m, l);
+ error = soconnect(so, mtod(m, struct sockaddr*), l);
m_free(m);
if (error) {
sounlock(so);
Index: src/sys/nfs/nfs_socket.c
diff -u src/sys/nfs/nfs_socket.c:1.194 src/sys/nfs/nfs_socket.c:1.195
--- src/sys/nfs/nfs_socket.c:1.194 Fri Apr 3 20:01:07 2015
+++ src/sys/nfs/nfs_socket.c Sat May 2 17:18:04 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: nfs_socket.c,v 1.194 2015/04/03 20:01:07 rtr Exp $ */
+/* $NetBSD: nfs_socket.c,v 1.195 2015/05/02 17:18:04 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.194 2015/04/03 20:01:07 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nfs_socket.c,v 1.195 2015/05/02 17:18:04 rtr Exp $");
#ifdef _KERNEL_OPT
#include "opt_nfs.h"
@@ -243,7 +243,7 @@ nfs_connect(struct nfsmount *nmp, struct
goto bad;
}
} else {
- error = soconnect(so, nmp->nm_nam, l);
+ error = soconnect(so, mtod(nmp->nm_nam, struct sockaddr *), l);
if (error) {
sounlock(so);
goto bad;
@@ -800,7 +800,8 @@ nfs_timer(void *arg)
m, NULL, NULL, NULL);
else
error = (*so->so_proto->pr_usrreqs->pr_send)(so,
- m, nmp->nm_nam, NULL, NULL);
+ m, mtod(nmp->nm_nam, struct sockaddr *),
+ NULL, NULL);
if (error) {
if (NFSIGNORE_SOERROR(nmp->nm_soflags, error)) {
#ifdef DEBUG
Index: src/sys/rump/net/lib/libsockin/sockin.c
diff -u src/sys/rump/net/lib/libsockin/sockin.c:1.61 src/sys/rump/net/lib/libsockin/sockin.c:1.62
--- src/sys/rump/net/lib/libsockin/sockin.c:1.61 Sun Apr 26 21:40:49 2015
+++ src/sys/rump/net/lib/libsockin/sockin.c Sat May 2 17:18:04 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: sockin.c,v 1.61 2015/04/26 21:40:49 rtr Exp $ */
+/* $NetBSD: sockin.c,v 1.62 2015/05/02 17:18:04 rtr Exp $ */
/*
* Copyright (c) 2008, 2009 Antti Kantee. All Rights Reserved.
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sockin.c,v 1.61 2015/04/26 21:40:49 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sockin.c,v 1.62 2015/05/02 17:18:04 rtr Exp $");
#include <sys/param.h>
#include <sys/condvar.h>
@@ -72,7 +72,7 @@ static int sockin_accept(struct socket *
static int sockin_connect2(struct socket *, struct socket *);
static int sockin_bind(struct socket *, struct sockaddr *, struct lwp *);
static int sockin_listen(struct socket *, struct lwp *);
-static int sockin_connect(struct socket *, struct mbuf *, struct lwp *);
+static int sockin_connect(struct socket *, struct sockaddr *, struct lwp *);
static int sockin_disconnect(struct socket *);
static int sockin_shutdown(struct socket *);
static int sockin_abort(struct socket *);
@@ -82,7 +82,7 @@ static int sockin_peeraddr(struct socket
static int sockin_sockaddr(struct socket *, struct sockaddr *);
static int sockin_rcvd(struct socket *, int, struct lwp *);
static int sockin_recvoob(struct socket *, struct mbuf *, int);
-static int sockin_send(struct socket *, struct mbuf *, struct mbuf *,
+static int sockin_send(struct socket *, struct mbuf *, struct sockaddr *,
struct mbuf *, struct lwp *);
static int sockin_sendoob(struct socket *, struct mbuf *, struct mbuf *);
static int sockin_purgeif(struct socket *, struct ifnet *);
@@ -508,15 +508,14 @@ sockin_listen(struct socket *so, struct
}
static int
-sockin_connect(struct socket *so, struct mbuf *nam, struct lwp *l)
+sockin_connect(struct socket *so, struct sockaddr *nam, struct lwp *l)
{
int error = 0;
KASSERT(solocked(so));
KASSERT(nam != NULL);
- error = rumpcomp_sockin_connect(SO2S(so),
- mtod(nam, struct sockaddr *), nam->m_len);
+ error = rumpcomp_sockin_connect(SO2S(so), nam, nam->sa_len);
if (error == 0)
soisconnected(so);
@@ -617,10 +616,9 @@ sockin_recvoob(struct socket *so, struct
}
static int
-sockin_send(struct socket *so, struct mbuf *m, struct mbuf *nam,
+sockin_send(struct socket *so, struct mbuf *m, struct sockaddr *saddr,
struct mbuf *control, struct lwp *l)
{
- struct sockaddr *saddr;
struct msghdr mhdr;
size_t iov_max, i;
struct iovec iov_buf[32], *iov;
@@ -655,8 +653,7 @@ sockin_send(struct socket *so, struct mb
mhdr.msg_iovlen = i;
s = SO2S(so);
- if (nam != NULL) {
- saddr = mtod(nam, struct sockaddr *);
+ if (saddr != NULL) {
mhdr.msg_name = saddr;
mhdr.msg_namelen = saddr->sa_len;
}
Index: src/sys/sys/param.h
diff -u src/sys/sys/param.h:1.476 src/sys/sys/param.h:1.477
--- src/sys/sys/param.h:1.476 Sat May 2 08:00:08 2015
+++ src/sys/sys/param.h Sat May 2 17:18:04 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: param.h,v 1.476 2015/05/02 08:00:08 mlelstv Exp $ */
+/* $NetBSD: param.h,v 1.477 2015/05/02 17:18:04 rtr Exp $ */
/*-
* Copyright (c) 1982, 1986, 1989, 1993
@@ -63,7 +63,7 @@
* 2.99.9 (299000900)
*/
-#define __NetBSD_Version__ 799001400 /* NetBSD 7.99.14 */
+#define __NetBSD_Version__ 799001500 /* NetBSD 7.99.15 */
#define __NetBSD_Prereq__(M,m,p) (((((M) * 100000000) + \
(m) * 1000000) + (p) * 100) <= __NetBSD_Version__)
Index: src/sys/sys/protosw.h
diff -u src/sys/sys/protosw.h:1.63 src/sys/sys/protosw.h:1.64
--- src/sys/sys/protosw.h:1.63 Sun Apr 26 21:40:49 2015
+++ src/sys/sys/protosw.h Sat May 2 17:18:04 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: protosw.h,v 1.63 2015/04/26 21:40:49 rtr Exp $ */
+/* $NetBSD: protosw.h,v 1.64 2015/05/02 17:18:04 rtr Exp $ */
/*-
* Copyright (c) 1982, 1986, 1993
@@ -239,7 +239,7 @@ struct pr_usrreqs {
int (*pr_attach)(struct socket *, int);
void (*pr_detach)(struct socket *);
int (*pr_accept)(struct socket *, struct sockaddr *);
- int (*pr_connect)(struct socket *, struct mbuf *, struct lwp *);
+ int (*pr_connect)(struct socket *, struct sockaddr *, struct lwp *);
int (*pr_connect2)(struct socket *, struct socket *);
int (*pr_bind)(struct socket *, struct sockaddr *, struct lwp *);
int (*pr_listen)(struct socket *, struct lwp *);
@@ -252,7 +252,7 @@ struct pr_usrreqs {
int (*pr_sockaddr)(struct socket *, struct sockaddr *);
int (*pr_rcvd)(struct socket *, int, struct lwp *);
int (*pr_recvoob)(struct socket *, struct mbuf *, int);
- int (*pr_send)(struct socket *, struct mbuf *, struct mbuf *,
+ int (*pr_send)(struct socket *, struct mbuf *, struct sockaddr *,
struct mbuf *, struct lwp *);
int (*pr_sendoob)(struct socket *, struct mbuf *, struct mbuf *);
int (*pr_purgeif)(struct socket *, struct ifnet *);
@@ -327,7 +327,7 @@ name##_bind_wrapper(struct socket *a,
} \
static int \
name##_connect_wrapper(struct socket *a, \
- struct mbuf *b, struct lwp *c) \
+ struct sockaddr *b, struct lwp *c) \
{ \
int rv; \
KERNEL_LOCK(1, NULL); \
@@ -442,7 +442,7 @@ name##_recvoob_wrapper(struct socket *a,
} \
static int \
name##_send_wrapper(struct socket *a, struct mbuf *b, \
- struct mbuf *c, struct mbuf *d, struct lwp *e) \
+ struct sockaddr *c, struct mbuf *d, struct lwp *e) \
{ \
int rv; \
KERNEL_LOCK(1, NULL); \
Index: src/sys/sys/socketvar.h
diff -u src/sys/sys/socketvar.h:1.137 src/sys/sys/socketvar.h:1.138
--- src/sys/sys/socketvar.h:1.137 Fri Apr 24 22:32:38 2015
+++ src/sys/sys/socketvar.h Sat May 2 17:18:04 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: socketvar.h,v 1.137 2015/04/24 22:32:38 rtr Exp $ */
+/* $NetBSD: socketvar.h,v 1.138 2015/05/02 17:18:04 rtr Exp $ */
/*-
* Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
@@ -293,7 +293,7 @@ int sobind(struct socket *, struct socka
void socantrcvmore(struct socket *);
void socantsendmore(struct socket *);
int soclose(struct socket *);
-int soconnect(struct socket *, struct mbuf *, struct lwp *);
+int soconnect(struct socket *, struct sockaddr *, struct lwp *);
int soconnect2(struct socket *, struct socket *);
int socreate(int, struct socket **, int, int, struct lwp *,
struct socket *);
@@ -355,7 +355,7 @@ int do_sys_recvmsg(struct lwp *, int, st
struct mbuf **, register_t *);
int do_sys_bind(struct lwp *, int, struct sockaddr *);
-int do_sys_connect(struct lwp *, int, struct mbuf *);
+int do_sys_connect(struct lwp *, int, struct sockaddr *);
int do_sys_accept(struct lwp *, int, struct sockaddr *, register_t *,
const sigset_t *, int, int);
Index: src/sys/sys/un.h
diff -u src/sys/sys/un.h:1.55 src/sys/sys/un.h:1.56
--- src/sys/sys/un.h:1.55 Sat Aug 9 05:33:01 2014
+++ src/sys/sys/un.h Sat May 2 17:18:04 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: un.h,v 1.55 2014/08/09 05:33:01 rtr Exp $ */
+/* $NetBSD: un.h,v 1.56 2015/05/02 17:18:04 rtr Exp $ */
/*
* Copyright (c) 1982, 1986, 1993
@@ -75,6 +75,7 @@ struct unpcbid {
struct unpcb;
struct socket;
struct sockopt;
+struct sockaddr;
extern const struct pr_usrreqs unp_usrreqs;
@@ -84,7 +85,7 @@ kmutex_t *uipc_dgramlock(void);
kmutex_t *uipc_streamlock(void);
kmutex_t *uipc_rawlock(void);
-int unp_connect(struct socket *, struct mbuf *, struct lwp *);
+int unp_connect(struct socket *, struct sockaddr *, struct lwp *);
int unp_connect2(struct socket *, struct socket *);
void unp_dispose(struct mbuf *);
int unp_externalize(struct mbuf *, struct lwp *, int);