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);

Reply via email to