Module Name: src Committed By: rtr Date: Fri Apr 24 22:32:38 UTC 2015
Modified Files: 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 in_pcb.c in_pcb.h raw_ip.c tcp_usrreq.c udp_usrreq.c src/sys/netinet6: dccp6_usrreq.c in6_pcb.c in6_pcb.h raw_ip6.c udp6_usrreq.c src/sys/netipsec: keysock.c src/sys/netmpls: mpls_proto.c src/sys/netnatm: natm.c src/sys/rump/net/lib/libsockin: sockin.c src/sys/sys: param.h protosw.h socketvar.h Log Message: make accept, getsockname and getpeername syscalls use sockaddr_big and modify pr_{accept,sockname,peername} nam parameter type from mbuf * to sockaddr *. * retained use of mbuftypes[MT_SONAME] for now. * bump to netbsd version 7.99.12 for parameter type change. patch posted to tech-net@ 2015/04/19 To generate a diff of this commit: cvs rdiff -u -r1.83 -r1.84 src/sys/compat/svr4/svr4_stream.c cvs rdiff -u -r1.238 -r1.239 src/sys/kern/uipc_socket.c cvs rdiff -u -r1.175 -r1.176 src/sys/kern/uipc_syscalls.c cvs rdiff -u -r1.176 -r1.177 src/sys/kern/uipc_usrreq.c cvs rdiff -u -r1.163 -r1.164 src/sys/net/if_gre.c cvs rdiff -u -r1.25 -r1.26 src/sys/net/link_proto.c cvs rdiff -u -r1.23 -r1.24 src/sys/net/raw_cb.h cvs rdiff -u -r1.52 -r1.53 src/sys/net/raw_usrreq.c cvs rdiff -u -r1.168 -r1.169 src/sys/net/rtsock.c cvs rdiff -u -r1.64 -r1.65 src/sys/netatalk/ddp_usrreq.c cvs rdiff -u -r1.41 -r1.42 src/sys/netbt/hci_socket.c cvs rdiff -u -r1.32 -r1.33 src/sys/netbt/l2cap_socket.c cvs rdiff -u -r1.34 -r1.35 src/sys/netbt/rfcomm_socket.c \ src/sys/netbt/sco_socket.c cvs rdiff -u -r1.2 -r1.3 src/sys/netinet/dccp_usrreq.c cvs rdiff -u -r1.156 -r1.157 src/sys/netinet/in_pcb.c cvs rdiff -u -r1.56 -r1.57 src/sys/netinet/in_pcb.h cvs rdiff -u -r1.147 -r1.148 src/sys/netinet/raw_ip.c cvs rdiff -u -r1.205 -r1.206 src/sys/netinet/tcp_usrreq.c cvs rdiff -u -r1.218 -r1.219 src/sys/netinet/udp_usrreq.c cvs rdiff -u -r1.2 -r1.3 src/sys/netinet6/dccp6_usrreq.c cvs rdiff -u -r1.135 -r1.136 src/sys/netinet6/in6_pcb.c cvs rdiff -u -r1.42 -r1.43 src/sys/netinet6/in6_pcb.h cvs rdiff -u -r1.137 -r1.138 src/sys/netinet6/raw_ip6.c cvs rdiff -u -r1.117 -r1.118 src/sys/netinet6/udp6_usrreq.c cvs rdiff -u -r1.45 -r1.46 src/sys/netipsec/keysock.c cvs rdiff -u -r1.25 -r1.26 src/sys/netmpls/mpls_proto.c cvs rdiff -u -r1.46 -r1.47 src/sys/netnatm/natm.c cvs rdiff -u -r1.59 -r1.60 src/sys/rump/net/lib/libsockin/sockin.c cvs rdiff -u -r1.473 -r1.474 src/sys/sys/param.h cvs rdiff -u -r1.61 -r1.62 src/sys/sys/protosw.h cvs rdiff -u -r1.136 -r1.137 src/sys/sys/socketvar.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/compat/svr4/svr4_stream.c diff -u src/sys/compat/svr4/svr4_stream.c:1.83 src/sys/compat/svr4/svr4_stream.c:1.84 --- src/sys/compat/svr4/svr4_stream.c:1.83 Sun Apr 19 19:17:37 2015 +++ src/sys/compat/svr4/svr4_stream.c Fri Apr 24 22:32:37 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: svr4_stream.c,v 1.83 2015/04/19 19:17:37 rtr Exp $ */ +/* $NetBSD: svr4_stream.c,v 1.84 2015/04/24 22:32:37 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.83 2015/04/19 19:17:37 rtr Exp $"); +__KERNEL_RCSID(0, "$NetBSD: svr4_stream.c,v 1.84 2015/04/24 22:32:37 rtr Exp $"); #include <sys/param.h> #include <sys/kernel.h> @@ -872,11 +872,12 @@ svr4_stream_ti_ioctl(file_t *fp, struct struct svr4_strm *st = svr4_stream_get(fp); int error; struct svr4_strmcmd sc; - struct mbuf *name; + struct sockaddr_big sbig; if (st == NULL) return EINVAL; + sbig.sb_len = UCHAR_MAX; sc.offs = 0x10; if ((error = copyin(sub, &skb, sizeof(skb))) != 0) { @@ -887,14 +888,14 @@ svr4_stream_ti_ioctl(file_t *fp, struct switch (cmd) { case SVR4_TI_GETMYNAME: DPRINTF(("TI_GETMYNAME\n")); - error = do_sys_getsockname(fd, &name); + error = do_sys_getsockname(fd, (struct sockaddr *)&sbig); if (error != 0) return error; break; case SVR4_TI_GETPEERNAME: DPRINTF(("TI_GETPEERNAME\n")); - error = do_sys_getpeername(fd, &name); + error = do_sys_getpeername(fd, (struct sockaddr *)&sbig); if (error != 0) return error; break; @@ -913,12 +914,12 @@ svr4_stream_ti_ioctl(file_t *fp, struct switch (st->s_family) { case AF_INET: - sockaddr_to_netaddr_in(&sc, mtod(name, void *)); + sockaddr_to_netaddr_in(&sc, (struct sockaddr_in *)&sbig); skb.len = sizeof (struct sockaddr_in); break; case AF_LOCAL: - sockaddr_to_netaddr_un(&sc, mtod(name, void *)); + sockaddr_to_netaddr_un(&sc, (struct sockaddr_un *)&sbig); /* XXX: the length gets adjusted but the copyout doesn't */ skb.len = sizeof (struct sockaddr_un) + 4; break; @@ -926,12 +927,10 @@ svr4_stream_ti_ioctl(file_t *fp, struct default: DPRINTF(("ti_ioctl: Unsupported address family %d\n", st->s_family)); - m_free(name); return ENOSYS; } - error = copyout(SVR4_ADDROF(&sc), NETBSD32PTR(skb.buf), name->m_len); - m_free(name); + error = copyout(SVR4_ADDROF(&sc), NETBSD32PTR(skb.buf), sbig.sb_len); if (error != 0) { DPRINTF(("ti_ioctl: error copying out socket data\n")); return error; @@ -1539,8 +1538,10 @@ svr4_sys_getmsg(struct lwp *l, const str struct iovec aiov; struct svr4_strm *st; int fl; + struct sockaddr_big sbig; struct mbuf *name; + sbig.sb_len = UCHAR_MAX; memset(&sc, 0, sizeof(sc)); #ifdef DEBUG_SVR4 @@ -1618,7 +1619,8 @@ svr4_sys_getmsg(struct lwp *l, const str * a connect verification. */ - error = do_sys_getsockname(SCARG(uap, fd), &name); + error = do_sys_getsockname(SCARG(uap, fd), + (struct sockaddr *)&sbig); if (error != 0) { DPRINTF(("getmsg: getsockname failed %d\n", error)); goto out; @@ -1633,20 +1635,20 @@ svr4_sys_getmsg(struct lwp *l, const str switch (st->s_family) { case AF_INET: sc.len = sizeof (struct sockaddr_in) + 4; - sockaddr_to_netaddr_in(&sc, mtod(name, void *)); + sockaddr_to_netaddr_in(&sc, + (struct sockaddr_in *)&sbig); break; case AF_LOCAL: sc.len = sizeof (struct sockaddr_un) + 4; - sockaddr_to_netaddr_un(&sc, mtod(name, void *)); + sockaddr_to_netaddr_un(&sc, + (struct sockaddr_un *)&sbig); break; default: - m_free(name); error = ENOSYS; goto out; } - m_free(name); ctl.len = 40; dat.len = -1; @@ -1675,8 +1677,8 @@ svr4_sys_getmsg(struct lwp *l, const str * We are after a listen, so we try to accept... */ - error = do_sys_accept(l, SCARG(uap, fd), &name, retval, - NULL, 0, FNONBLOCK); + error = do_sys_accept(l, SCARG(uap, fd), + (struct sockaddr *)&sbig, retval, NULL, 0, FNONBLOCK); if (error != 0) { DPRINTF(("getmsg: accept failed %d\n", error)); goto out; @@ -1693,7 +1695,8 @@ svr4_sys_getmsg(struct lwp *l, const str switch (st->s_family) { case AF_INET: sc.pad[1] = 0x28; - sockaddr_to_netaddr_in(&sc, mtod(name, void *)); + sockaddr_to_netaddr_in(&sc, + (struct sockaddr_in *)&sbig); ctl.len = 40; sc.len = sizeof (struct sockaddr_in); break; @@ -1707,11 +1710,9 @@ svr4_sys_getmsg(struct lwp *l, const str break; default: - m_free(name); error = ENOSYS; goto out; } - m_free(name); dat.len = -1; fl = 0; Index: src/sys/kern/uipc_socket.c diff -u src/sys/kern/uipc_socket.c:1.238 src/sys/kern/uipc_socket.c:1.239 --- src/sys/kern/uipc_socket.c:1.238 Sun Apr 5 23:19:56 2015 +++ src/sys/kern/uipc_socket.c Fri Apr 24 22:32:37 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: uipc_socket.c,v 1.238 2015/04/05 23:19:56 rtr Exp $ */ +/* $NetBSD: uipc_socket.c,v 1.239 2015/04/24 22:32:37 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.238 2015/04/05 23:19:56 rtr Exp $"); +__KERNEL_RCSID(0, "$NetBSD: uipc_socket.c,v 1.239 2015/04/24 22:32:37 rtr Exp $"); #include "opt_compat_netbsd.h" #include "opt_sock_counters.h" @@ -793,7 +793,7 @@ soabort(struct socket *so) } int -soaccept(struct socket *so, struct mbuf *nam) +soaccept(struct socket *so, struct sockaddr *nam) { int error; Index: src/sys/kern/uipc_syscalls.c diff -u src/sys/kern/uipc_syscalls.c:1.175 src/sys/kern/uipc_syscalls.c:1.176 --- src/sys/kern/uipc_syscalls.c:1.175 Fri Apr 3 20:01:07 2015 +++ src/sys/kern/uipc_syscalls.c Fri Apr 24 22:32:37 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: uipc_syscalls.c,v 1.175 2015/04/03 20:01:07 rtr Exp $ */ +/* $NetBSD: uipc_syscalls.c,v 1.176 2015/04/24 22:32:37 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.175 2015/04/03 20:01:07 rtr Exp $"); +__KERNEL_RCSID(0, "$NetBSD: uipc_syscalls.c,v 1.176 2015/04/24 22:32:37 rtr Exp $"); #include "opt_pipe.h" @@ -92,6 +92,8 @@ __KERNEL_RCSID(0, "$NetBSD: uipc_syscall extern const struct fileops socketops; static int sockargs_sb(struct sockaddr_big *, const void *, socklen_t); +static int copyout_sockname_sb(struct sockaddr *, unsigned int *, + int , struct sockaddr_big *); int sys___socket30(struct lwp *l, const struct sys___socket30_args *uap, @@ -161,11 +163,10 @@ sys_listen(struct lwp *l, const struct s } int -do_sys_accept(struct lwp *l, int sock, struct mbuf **name, +do_sys_accept(struct lwp *l, int sock, struct sockaddr *name, register_t *new_sock, const sigset_t *mask, int flags, int clrflags) { file_t *fp, *fp2; - struct mbuf *nam; int error, fd; struct socket *so, *so2; short wakeup_state = 0; @@ -180,7 +181,6 @@ do_sys_accept(struct lwp *l, int sock, s fd_putfile(sock); return error; } - nam = m_get(M_WAIT, MT_SONAME); *new_sock = fd; so = fp->f_socket; solock(so); @@ -235,12 +235,11 @@ do_sys_accept(struct lwp *l, int sock, s so2->so_state |= SS_NBIO; else so2->so_state &= ~SS_NBIO; - error = soaccept(so2, nam); + error = soaccept(so2, name); so2->so_cred = kauth_cred_dup(so->so_cred); sounlock(so); if (error) { /* an error occurred, free the file descriptor and mbuf */ - m_freem(nam); mutex_enter(&fp2->f_lock); fp2->f_count++; mutex_exit(&fp2->f_lock); @@ -249,7 +248,6 @@ do_sys_accept(struct lwp *l, int sock, s } else { fd_set_exclose(l, fd, (flags & SOCK_CLOEXEC) != 0); fd_affix(curproc, fp2, fd); - *name = nam; } fd_putfile(sock); if (__predict_false(mask)) @@ -257,7 +255,6 @@ do_sys_accept(struct lwp *l, int sock, s return error; bad: sounlock(so); - m_freem(nam); fd_putfile(sock); fd_abort(curproc, fp2, fd); if (__predict_false(mask)) @@ -274,15 +271,15 @@ sys_accept(struct lwp *l, const struct s syscallarg(unsigned int *) anamelen; } */ int error, fd; - struct mbuf *name; + struct sockaddr_big name; - error = do_sys_accept(l, SCARG(uap, s), &name, retval, NULL, 0, 0); + name.sb_len = UCHAR_MAX; + error = do_sys_accept(l, SCARG(uap, s), (struct sockaddr *)&name, + retval, NULL, 0, 0); if (error != 0) return error; - error = copyout_sockname(SCARG(uap, name), SCARG(uap, anamelen), - MSG_LENUSRSPACE, name); - if (name != NULL) - m_free(name); + error = copyout_sockname_sb(SCARG(uap, name), SCARG(uap, anamelen), + MSG_LENUSRSPACE, &name); if (error != 0) { fd = (int)*retval; if (fd_getfile(fd) != NULL) @@ -303,7 +300,7 @@ sys_paccept(struct lwp *l, const struct syscallarg(int) flags; } */ int error, fd; - struct mbuf *name; + struct sockaddr_big name; sigset_t *mask, amask; if (SCARG(uap, mask) != NULL) { @@ -314,14 +311,13 @@ sys_paccept(struct lwp *l, const struct } else mask = NULL; - error = do_sys_accept(l, SCARG(uap, s), &name, retval, mask, - SCARG(uap, flags), FNONBLOCK); + name.sb_len = UCHAR_MAX; + error = do_sys_accept(l, SCARG(uap, s), (struct sockaddr *)&name, + retval, mask, SCARG(uap, flags), FNONBLOCK); if (error != 0) return error; - error = copyout_sockname(SCARG(uap, name), SCARG(uap, anamelen), - MSG_LENUSRSPACE, name); - if (name != NULL) - m_free(name); + error = copyout_sockname_sb(SCARG(uap, name), SCARG(uap, anamelen), + MSG_LENUSRSPACE, &name); if (error != 0) { fd = (int)*retval; if (fd_getfile(fd) != NULL) @@ -1296,28 +1292,21 @@ pipe1(struct lwp *l, register_t *retval, * Get peer socket name. */ int -do_sys_getpeername(int fd, struct mbuf **nam) +do_sys_getpeername(int fd, struct sockaddr *nam) { struct socket *so; - struct mbuf *m; int error; if ((error = fd_getsock(fd, &so)) != 0) return error; - m = m_getclr(M_WAIT, MT_SONAME); - MCLAIM(m, so->so_mowner); - solock(so); if ((so->so_state & SS_ISCONNECTED) == 0) error = ENOTCONN; else { - *nam = m; - error = (*so->so_proto->pr_usrreqs->pr_peeraddr)(so, m); + error = (*so->so_proto->pr_usrreqs->pr_peeraddr)(so, nam); } sounlock(so); - if (error != 0) - m_free(m); fd_putfile(fd); return error; } @@ -1326,29 +1315,63 @@ do_sys_getpeername(int fd, struct mbuf * * Get local socket name. */ int -do_sys_getsockname(int fd, struct mbuf **nam) +do_sys_getsockname(int fd, struct sockaddr *nam) { struct socket *so; - struct mbuf *m; int error; if ((error = fd_getsock(fd, &so)) != 0) return error; - m = m_getclr(M_WAIT, MT_SONAME); - MCLAIM(m, so->so_mowner); - - *nam = m; solock(so); - error = (*so->so_proto->pr_usrreqs->pr_sockaddr)(so, m); + error = (*so->so_proto->pr_usrreqs->pr_sockaddr)(so, nam); sounlock(so); - if (error != 0) - m_free(m); fd_putfile(fd); return error; } int +copyout_sockname_sb(struct sockaddr *asa, unsigned int *alen, int flags, + struct sockaddr_big *addr) +{ + int len; + int error; + + if (asa == NULL) + /* Assume application not interested */ + return 0; + + if (flags & MSG_LENUSRSPACE) { + error = copyin(alen, &len, sizeof(len)); + if (error) + return error; + } else + len = *alen; + if (len < 0) + return EINVAL; + + if (addr == NULL) { + len = 0; + error = 0; + } else { + if (len > addr->sb_len) + len = addr->sb_len; + /* XXX addr isn't an mbuf... */ + ktrkuser(mbuftypes[MT_SONAME], addr, len); + error = copyout(addr, asa, len); + } + + if (error == 0) { + if (flags & MSG_LENUSRSPACE) + error = copyout(&len, alen, sizeof(len)); + else + *alen = len; + } + + return error; +} + +int copyout_sockname(struct sockaddr *asa, unsigned int *alen, int flags, struct mbuf *addr) { @@ -1401,17 +1424,16 @@ sys_getsockname(struct lwp *l, const str syscallarg(struct sockaddr *) asa; syscallarg(unsigned int *) alen; } */ - struct mbuf *m; - int error; + struct sockaddr_big sbig; + int error; - error = do_sys_getsockname(SCARG(uap, fdes), &m); + sbig.sb_len = UCHAR_MAX; + error = do_sys_getsockname(SCARG(uap, fdes), (struct sockaddr *)&sbig); if (error != 0) return error; - error = copyout_sockname(SCARG(uap, asa), SCARG(uap, alen), - MSG_LENUSRSPACE, m); - if (m != NULL) - m_free(m); + error = copyout_sockname_sb(SCARG(uap, asa), SCARG(uap, alen), + MSG_LENUSRSPACE, &sbig); return error; } @@ -1427,17 +1449,16 @@ sys_getpeername(struct lwp *l, const str syscallarg(struct sockaddr *) asa; syscallarg(unsigned int *) alen; } */ - struct mbuf *m; - int error; + struct sockaddr_big sbig; + int error; - error = do_sys_getpeername(SCARG(uap, fdes), &m); + sbig.sb_len = UCHAR_MAX; + error = do_sys_getpeername(SCARG(uap, fdes), (struct sockaddr *)&sbig); if (error != 0) return error; - error = copyout_sockname(SCARG(uap, asa), SCARG(uap, alen), - MSG_LENUSRSPACE, m); - if (m != NULL) - m_free(m); + error = copyout_sockname_sb(SCARG(uap, asa), SCARG(uap, alen), + MSG_LENUSRSPACE, &sbig); return error; } Index: src/sys/kern/uipc_usrreq.c diff -u src/sys/kern/uipc_usrreq.c:1.176 src/sys/kern/uipc_usrreq.c:1.177 --- src/sys/kern/uipc_usrreq.c:1.176 Fri Apr 3 20:01:07 2015 +++ src/sys/kern/uipc_usrreq.c Fri Apr 24 22:32:37 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: uipc_usrreq.c,v 1.176 2015/04/03 20:01:07 rtr Exp $ */ +/* $NetBSD: uipc_usrreq.c,v 1.177 2015/04/24 22:32:37 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.176 2015/04/03 20:01:07 rtr Exp $"); +__KERNEL_RCSID(0, "$NetBSD: uipc_usrreq.c,v 1.177 2015/04/24 22:32:37 rtr Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -333,39 +333,25 @@ unp_output(struct mbuf *m, struct mbuf * } static void -unp_setaddr(struct socket *so, struct mbuf *nam, bool peeraddr) +unp_setaddr(struct socket *so, struct sockaddr *nam, bool peeraddr) { - const struct sockaddr_un *sun; + const struct sockaddr_un *sun = NULL; struct unpcb *unp; - bool ext; KASSERT(solocked(so)); unp = sotounpcb(so); - ext = false; - for (;;) { - sun = NULL; - if (peeraddr) { - if (unp->unp_conn && unp->unp_conn->unp_addr) - sun = unp->unp_conn->unp_addr; - } else { - if (unp->unp_addr) - sun = unp->unp_addr; - } - if (sun == NULL) - sun = &sun_noname; - nam->m_len = sun->sun_len; - if (nam->m_len > MLEN && !ext) { - sounlock(so); - MEXTMALLOC(nam, MAXPATHLEN * 2, M_WAITOK); - solock(so); - ext = true; - } else { - KASSERT(nam->m_len <= MAXPATHLEN * 2); - memcpy(mtod(nam, void *), sun, (size_t)nam->m_len); - break; - } + if (peeraddr) { + if (unp->unp_conn && unp->unp_conn->unp_addr) + sun = unp->unp_conn->unp_addr; + } else { + if (unp->unp_addr) + sun = unp->unp_addr; } + if (sun == NULL) + sun = &sun_noname; + + memcpy(nam, sun, sun->sun_len); } static int @@ -785,7 +771,7 @@ unp_detach(struct socket *so) } static int -unp_accept(struct socket *so, struct mbuf *nam) +unp_accept(struct socket *so, struct sockaddr *nam) { struct unpcb *unp = sotounpcb(so); struct socket *so2; @@ -888,7 +874,7 @@ unp_stat(struct socket *so, struct stat } static int -unp_peeraddr(struct socket *so, struct mbuf *nam) +unp_peeraddr(struct socket *so, struct sockaddr *nam) { KASSERT(solocked(so)); KASSERT(sotounpcb(so) != NULL); @@ -899,7 +885,7 @@ unp_peeraddr(struct socket *so, struct m } static int -unp_sockaddr(struct socket *so, struct mbuf *nam) +unp_sockaddr(struct socket *so, struct sockaddr *nam) { KASSERT(solocked(so)); KASSERT(sotounpcb(so) != NULL); Index: src/sys/net/if_gre.c diff -u src/sys/net/if_gre.c:1.163 src/sys/net/if_gre.c:1.164 --- src/sys/net/if_gre.c:1.163 Mon Apr 20 10:19:54 2015 +++ src/sys/net/if_gre.c Fri Apr 24 22:32:37 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: if_gre.c,v 1.163 2015/04/20 10:19:54 roy Exp $ */ +/* $NetBSD: if_gre.c,v 1.164 2015/04/24 22:32:37 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.163 2015/04/20 10:19:54 roy Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_gre.c,v 1.164 2015/04/24 22:32:37 rtr Exp $"); #include "opt_atalk.h" #include "opt_gre.h" @@ -149,8 +149,8 @@ static bool gre_is_nullconf(const struct static int gre_output(struct ifnet *, struct mbuf *, const struct sockaddr *, struct rtentry *); static int gre_ioctl(struct ifnet *, u_long, void *); -static int gre_getsockname(struct socket *, struct mbuf *); -static int gre_getpeername(struct socket *, struct mbuf *); +static int gre_getsockname(struct socket *, struct sockaddr *); +static int gre_getpeername(struct socket *, struct sockaddr *); static int gre_getnames(struct socket *, struct lwp *, struct sockaddr_storage *, struct sockaddr_storage *); static void gre_clearconf(struct gre_soparm *, bool); @@ -973,13 +973,13 @@ gre_output(struct ifnet *ifp, struct mbu } static int -gre_getsockname(struct socket *so, struct mbuf *nam) +gre_getsockname(struct socket *so, struct sockaddr *nam) { return (*so->so_proto->pr_usrreqs->pr_sockaddr)(so, nam); } static int -gre_getpeername(struct socket *so, struct mbuf *nam) +gre_getpeername(struct socket *so, struct sockaddr *nam) { return (*so->so_proto->pr_usrreqs->pr_peeraddr)(so, nam); } @@ -988,26 +988,19 @@ static int gre_getnames(struct socket *so, struct lwp *l, struct sockaddr_storage *src, struct sockaddr_storage *dst) { - struct mbuf *m; - struct sockaddr_storage *ss; + struct sockaddr_storage ss; int rc; - if ((m = getsombuf(so, MT_SONAME)) == NULL) - return ENOBUFS; - - ss = mtod(m, struct sockaddr_storage *); - solock(so); - if ((rc = gre_getsockname(so, m)) != 0) + if ((rc = gre_getsockname(so, (struct sockaddr *)&ss)) != 0) goto out; - *src = *ss; + *src = ss; - if ((rc = gre_getpeername(so, m)) != 0) + if ((rc = gre_getpeername(so, (struct sockaddr *)&ss)) != 0) goto out; - *dst = *ss; + *dst = ss; out: sounlock(so); - m_freem(m); return rc; } Index: src/sys/net/link_proto.c diff -u src/sys/net/link_proto.c:1.25 src/sys/net/link_proto.c:1.26 --- src/sys/net/link_proto.c:1.25 Fri Apr 3 20:01:07 2015 +++ src/sys/net/link_proto.c Fri Apr 24 22:32:37 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: link_proto.c,v 1.25 2015/04/03 20:01:07 rtr Exp $ */ +/* $NetBSD: link_proto.c,v 1.26 2015/04/24 22:32:37 rtr Exp $ */ /*- * Copyright (c) 1982, 1986, 1993 @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: link_proto.c,v 1.25 2015/04/03 20:01:07 rtr Exp $"); +__KERNEL_RCSID(0, "$NetBSD: link_proto.c,v 1.26 2015/04/24 22:32:37 rtr Exp $"); #include <sys/param.h> #include <sys/socket.h> @@ -50,7 +50,7 @@ __KERNEL_RCSID(0, "$NetBSD: link_proto.c static int sockaddr_dl_cmp(const struct sockaddr *, const struct sockaddr *); static int link_attach(struct socket *, int); static void link_detach(struct socket *); -static int link_accept(struct socket *, struct mbuf *); +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 *); @@ -60,8 +60,8 @@ static int link_shutdown(struct socket * static int link_abort(struct socket *); static int link_ioctl(struct socket *, u_long, void *, struct ifnet *); static int link_stat(struct socket *, struct stat *); -static int link_peeraddr(struct socket *, struct mbuf *); -static int link_sockaddr(struct socket *, struct mbuf *); +static int link_peeraddr(struct socket *, struct sockaddr *); +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 *, @@ -266,7 +266,7 @@ link_detach(struct socket *so) } static int -link_accept(struct socket *so, struct mbuf *nam) +link_accept(struct socket *so, struct sockaddr *nam) { KASSERT(solocked(so)); @@ -344,7 +344,7 @@ link_stat(struct socket *so, struct stat } static int -link_peeraddr(struct socket *so, struct mbuf *nam) +link_peeraddr(struct socket *so, struct sockaddr *nam) { KASSERT(solocked(so)); @@ -352,7 +352,7 @@ link_peeraddr(struct socket *so, struct } static int -link_sockaddr(struct socket *so, struct mbuf *nam) +link_sockaddr(struct socket *so, struct sockaddr *nam) { KASSERT(solocked(so)); Index: src/sys/net/raw_cb.h diff -u src/sys/net/raw_cb.h:1.23 src/sys/net/raw_cb.h:1.24 --- src/sys/net/raw_cb.h:1.23 Tue Aug 5 07:55:31 2014 +++ src/sys/net/raw_cb.h Fri Apr 24 22:32:37 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: raw_cb.h,v 1.23 2014/08/05 07:55:31 rtr Exp $ */ +/* $NetBSD: raw_cb.h,v 1.24 2015/04/24 22:32:37 rtr Exp $ */ /* * Copyright (c) 1980, 1986, 1993 @@ -68,8 +68,8 @@ void raw_init(void); void raw_input(struct mbuf *, ...); int raw_usrreq(struct socket *, int, struct mbuf *, struct mbuf *, struct mbuf *, struct lwp *); -void raw_setsockaddr(struct rawcb *, struct mbuf *); -void raw_setpeeraddr(struct rawcb *, struct mbuf *); +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 *); Index: src/sys/net/raw_usrreq.c diff -u src/sys/net/raw_usrreq.c:1.52 src/sys/net/raw_usrreq.c:1.53 --- src/sys/net/raw_usrreq.c:1.52 Sat Aug 9 05:33:01 2014 +++ src/sys/net/raw_usrreq.c Fri Apr 24 22:32:37 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: raw_usrreq.c,v 1.52 2014/08/09 05:33:01 rtr Exp $ */ +/* $NetBSD: raw_usrreq.c,v 1.53 2015/04/24 22:32:37 rtr Exp $ */ /* * Copyright (c) 1980, 1986, 1993 @@ -36,7 +36,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: raw_usrreq.c,v 1.52 2014/08/09 05:33:01 rtr Exp $"); +__KERNEL_RCSID(0, "$NetBSD: raw_usrreq.c,v 1.53 2015/04/24 22:32:37 rtr Exp $"); #include <sys/param.h> #include <sys/mbuf.h> @@ -138,19 +138,17 @@ raw_ctlinput(int cmd, const struct socka } void -raw_setsockaddr(struct rawcb *rp, struct mbuf *nam) +raw_setsockaddr(struct rawcb *rp, struct sockaddr *nam) { - nam->m_len = rp->rcb_laddr->sa_len; - memcpy(mtod(nam, void *), rp->rcb_laddr, (size_t)nam->m_len); + memcpy(nam, rp->rcb_laddr, rp->rcb_laddr->sa_len); } void -raw_setpeeraddr(struct rawcb *rp, struct mbuf *nam) +raw_setpeeraddr(struct rawcb *rp, struct sockaddr *nam) { - nam->m_len = rp->rcb_faddr->sa_len; - memcpy(mtod(nam, void *), rp->rcb_faddr, (size_t)nam->m_len); + memcpy(nam, rp->rcb_faddr, rp->rcb_faddr->sa_len); } int Index: src/sys/net/rtsock.c diff -u src/sys/net/rtsock.c:1.168 src/sys/net/rtsock.c:1.169 --- src/sys/net/rtsock.c:1.168 Mon Apr 6 06:26:21 2015 +++ src/sys/net/rtsock.c Fri Apr 24 22:32:37 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: rtsock.c,v 1.168 2015/04/06 06:26:21 ozaki-r Exp $ */ +/* $NetBSD: rtsock.c,v 1.169 2015/04/24 22:32:37 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.168 2015/04/06 06:26:21 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rtsock.c,v 1.169 2015/04/24 22:32:37 rtr Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -229,7 +229,7 @@ COMPATNAME(route_detach)(struct socket * } static int -COMPATNAME(route_accept)(struct socket *so, struct mbuf *nam) +COMPATNAME(route_accept)(struct socket *so, struct sockaddr *nam) { KASSERT(solocked(so)); @@ -329,7 +329,7 @@ COMPATNAME(route_stat)(struct socket *so } static int -COMPATNAME(route_peeraddr)(struct socket *so, struct mbuf *nam) +COMPATNAME(route_peeraddr)(struct socket *so, struct sockaddr *nam) { struct rawcb *rp = sotorawcb(so); @@ -345,7 +345,7 @@ COMPATNAME(route_peeraddr)(struct socket } static int -COMPATNAME(route_sockaddr)(struct socket *so, struct mbuf *nam) +COMPATNAME(route_sockaddr)(struct socket *so, struct sockaddr *nam) { struct rawcb *rp = sotorawcb(so); Index: src/sys/netatalk/ddp_usrreq.c diff -u src/sys/netatalk/ddp_usrreq.c:1.64 src/sys/netatalk/ddp_usrreq.c:1.65 --- src/sys/netatalk/ddp_usrreq.c:1.64 Fri Apr 3 20:01:07 2015 +++ src/sys/netatalk/ddp_usrreq.c Fri Apr 24 22:32:37 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: ddp_usrreq.c,v 1.64 2015/04/03 20:01:07 rtr Exp $ */ +/* $NetBSD: ddp_usrreq.c,v 1.65 2015/04/24 22:32:37 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.64 2015/04/03 20:01:07 rtr Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ddp_usrreq.c,v 1.65 2015/04/24 22:32:37 rtr Exp $"); #include "opt_mbuftrace.h" @@ -57,7 +57,7 @@ __KERNEL_RCSID(0, "$NetBSD: ddp_usrreq.c #include <netatalk/at_extern.h> static void at_pcbdisconnect(struct ddpcb *); -static void at_sockaddr(struct ddpcb *, struct mbuf *); +static void at_sockaddr(struct ddpcb *, struct sockaddr_at *); static int at_pcbsetaddr(struct ddpcb *, struct sockaddr_at *); static int at_pcbconnect(struct ddpcb *, struct mbuf *); static void ddp_detach(struct socket *); @@ -132,13 +132,10 @@ release: } static void -at_sockaddr(struct ddpcb *ddp, struct mbuf *addr) +at_sockaddr(struct ddpcb *ddp, struct sockaddr_at *addr) { - struct sockaddr_at *sat; - addr->m_len = sizeof(struct sockaddr_at); - sat = mtod(addr, struct sockaddr_at *); - *sat = ddp->ddp_lsat; + *addr = ddp->ddp_lsat; } static int @@ -402,7 +399,7 @@ ddp_detach(struct socket *so) } static int -ddp_accept(struct socket *so, struct mbuf *nam) +ddp_accept(struct socket *so, struct sockaddr *nam) { KASSERT(solocked(so)); @@ -504,7 +501,7 @@ ddp_stat(struct socket *so, struct stat } static int -ddp_peeraddr(struct socket *so, struct mbuf *nam) +ddp_peeraddr(struct socket *so, struct sockaddr *nam) { KASSERT(solocked(so)); @@ -512,13 +509,13 @@ ddp_peeraddr(struct socket *so, struct m } static int -ddp_sockaddr(struct socket *so, struct mbuf *nam) +ddp_sockaddr(struct socket *so, struct sockaddr *nam) { KASSERT(solocked(so)); KASSERT(sotoddpcb(so) != NULL); KASSERT(nam != NULL); - at_sockaddr(sotoddpcb(so), nam); + at_sockaddr(sotoddpcb(so), (struct sockaddr_at *)nam); return 0; } Index: src/sys/netbt/hci_socket.c diff -u src/sys/netbt/hci_socket.c:1.41 src/sys/netbt/hci_socket.c:1.42 --- src/sys/netbt/hci_socket.c:1.41 Fri Apr 3 20:01:07 2015 +++ src/sys/netbt/hci_socket.c Fri Apr 24 22:32:37 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: hci_socket.c,v 1.41 2015/04/03 20:01:07 rtr Exp $ */ +/* $NetBSD: hci_socket.c,v 1.42 2015/04/24 22:32:37 rtr Exp $ */ /*- * Copyright (c) 2005 Iain Hibbert. @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: hci_socket.c,v 1.41 2015/04/03 20:01:07 rtr Exp $"); +__KERNEL_RCSID(0, "$NetBSD: hci_socket.c,v 1.42 2015/04/24 22:32:37 rtr Exp $"); /* load symbolic names */ #ifdef BLUETOOTH_DEBUG @@ -484,7 +484,7 @@ hci_detach(struct socket *so) } static int -hci_accept(struct socket *so, struct mbuf *nam) +hci_accept(struct socket *so, struct sockaddr *nam) { KASSERT(solocked(so)); @@ -616,18 +616,16 @@ hci_stat(struct socket *so, struct stat } static int -hci_peeraddr(struct socket *so, struct mbuf *nam) +hci_peeraddr(struct socket *so, struct sockaddr *nam) { struct hci_pcb *pcb = (struct hci_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 *); memset(sa, 0, sizeof(struct sockaddr_bt)); - nam->m_len = sa->bt_len = sizeof(struct sockaddr_bt); sa->bt_family = AF_BLUETOOTH; bdaddr_copy(&sa->bt_bdaddr, &pcb->hp_raddr); @@ -635,18 +633,16 @@ hci_peeraddr(struct socket *so, struct m } static int -hci_sockaddr(struct socket *so, struct mbuf *nam) +hci_sockaddr(struct socket *so, struct sockaddr *nam) { struct hci_pcb *pcb = (struct hci_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 *); memset(sa, 0, sizeof(struct sockaddr_bt)); - nam->m_len = sa->bt_len = sizeof(struct sockaddr_bt); sa->bt_family = AF_BLUETOOTH; bdaddr_copy(&sa->bt_bdaddr, &pcb->hp_laddr); Index: src/sys/netbt/l2cap_socket.c diff -u src/sys/netbt/l2cap_socket.c:1.32 src/sys/netbt/l2cap_socket.c:1.33 --- src/sys/netbt/l2cap_socket.c:1.32 Fri Apr 3 20:01:07 2015 +++ src/sys/netbt/l2cap_socket.c Fri Apr 24 22:32:37 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: l2cap_socket.c,v 1.32 2015/04/03 20:01:07 rtr Exp $ */ +/* $NetBSD: l2cap_socket.c,v 1.33 2015/04/24 22:32:37 rtr Exp $ */ /*- * Copyright (c) 2005 Iain Hibbert. @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: l2cap_socket.c,v 1.32 2015/04/03 20:01:07 rtr Exp $"); +__KERNEL_RCSID(0, "$NetBSD: l2cap_socket.c,v 1.33 2015/04/24 22:32:37 rtr Exp $"); /* load symbolic names */ #ifdef BLUETOOTH_DEBUG @@ -117,10 +117,9 @@ l2cap_detach(struct socket *so) } static int -l2cap_accept(struct socket *so, struct mbuf *nam) +l2cap_accept(struct socket *so, struct sockaddr *nam) { struct l2cap_channel *pcb = so->so_pcb; - struct sockaddr_bt *sa; KASSERT(solocked(so)); KASSERT(nam != NULL); @@ -128,9 +127,7 @@ l2cap_accept(struct socket *so, struct m if (pcb == NULL) return EINVAL; - sa = mtod(nam, struct sockaddr_bt *); - nam->m_len = sizeof(struct sockaddr_bt); - return l2cap_peeraddr_pcb(pcb, sa); + return l2cap_peeraddr_pcb(pcb, (struct sockaddr_bt *)nam); } static int @@ -255,33 +252,27 @@ l2cap_stat(struct socket *so, struct sta } static int -l2cap_peeraddr(struct socket *so, struct mbuf *nam) +l2cap_peeraddr(struct socket *so, struct sockaddr *nam) { struct l2cap_channel *pcb = so->so_pcb; - struct sockaddr_bt *sa; KASSERT(solocked(so)); KASSERT(pcb != NULL); KASSERT(nam != NULL); - sa = mtod(nam, struct sockaddr_bt *); - nam->m_len = sizeof(struct sockaddr_bt); - return l2cap_peeraddr_pcb(pcb, sa); + return l2cap_peeraddr_pcb(pcb, (struct sockaddr_bt *)nam); } static int -l2cap_sockaddr(struct socket *so, struct mbuf *nam) +l2cap_sockaddr(struct socket *so, struct sockaddr *nam) { struct l2cap_channel *pcb = so->so_pcb; - struct sockaddr_bt *sa; KASSERT(solocked(so)); KASSERT(pcb != NULL); KASSERT(nam != NULL); - sa = mtod(nam, struct sockaddr_bt *); - nam->m_len = sizeof(struct sockaddr_bt); - return l2cap_sockaddr_pcb(pcb, sa); + return l2cap_sockaddr_pcb(pcb, (struct sockaddr_bt *)nam); } static int Index: src/sys/netbt/rfcomm_socket.c diff -u src/sys/netbt/rfcomm_socket.c:1.34 src/sys/netbt/rfcomm_socket.c:1.35 --- src/sys/netbt/rfcomm_socket.c:1.34 Fri Apr 3 20:01:07 2015 +++ src/sys/netbt/rfcomm_socket.c Fri Apr 24 22:32:37 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: rfcomm_socket.c,v 1.34 2015/04/03 20:01:07 rtr Exp $ */ +/* $NetBSD: rfcomm_socket.c,v 1.35 2015/04/24 22:32:37 rtr Exp $ */ /*- * Copyright (c) 2006 Itronix Inc. @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rfcomm_socket.c,v 1.34 2015/04/03 20:01:07 rtr Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rfcomm_socket.c,v 1.35 2015/04/24 22:32:37 rtr Exp $"); /* load symbolic names */ #ifdef BLUETOOTH_DEBUG @@ -125,10 +125,9 @@ rfcomm_detach(struct socket *so) } static int -rfcomm_accept(struct socket *so, struct mbuf *nam) +rfcomm_accept(struct socket *so, struct sockaddr *nam) { struct rfcomm_dlc *pcb = so->so_pcb; - struct sockaddr_bt *sa; KASSERT(solocked(so)); KASSERT(nam != NULL); @@ -136,9 +135,7 @@ rfcomm_accept(struct socket *so, struct if (pcb == NULL) return EINVAL; - sa = mtod(nam, struct sockaddr_bt *); - nam->m_len = sizeof(struct sockaddr_bt); - return rfcomm_peeraddr_pcb(pcb, sa); + return rfcomm_peeraddr_pcb(pcb, (struct sockaddr_bt *)nam); } static int @@ -265,33 +262,27 @@ rfcomm_stat(struct socket *so, struct st } static int -rfcomm_peeraddr(struct socket *so, struct mbuf *nam) +rfcomm_peeraddr(struct socket *so, struct sockaddr *nam) { struct rfcomm_dlc *pcb = so->so_pcb; - struct sockaddr_bt *sa; KASSERT(solocked(so)); KASSERT(pcb != NULL); KASSERT(nam != NULL); - sa = mtod(nam, struct sockaddr_bt *); - nam->m_len = sizeof(struct sockaddr_bt); - return rfcomm_peeraddr_pcb(pcb, sa); + return rfcomm_peeraddr_pcb(pcb, (struct sockaddr_bt *)nam); } static int -rfcomm_sockaddr(struct socket *so, struct mbuf *nam) +rfcomm_sockaddr(struct socket *so, struct sockaddr *nam) { struct rfcomm_dlc *pcb = so->so_pcb; - struct sockaddr_bt *sa; KASSERT(solocked(so)); KASSERT(pcb != NULL); KASSERT(nam != NULL); - sa = mtod(nam, struct sockaddr_bt *); - nam->m_len = sizeof(struct sockaddr_bt); - return rfcomm_sockaddr_pcb(pcb, sa); + return rfcomm_sockaddr_pcb(pcb, (struct sockaddr_bt *)nam); } static int Index: src/sys/netbt/sco_socket.c diff -u src/sys/netbt/sco_socket.c:1.34 src/sys/netbt/sco_socket.c:1.35 --- src/sys/netbt/sco_socket.c:1.34 Fri Apr 3 20:01:07 2015 +++ src/sys/netbt/sco_socket.c Fri Apr 24 22:32:37 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: sco_socket.c,v 1.34 2015/04/03 20:01:07 rtr Exp $ */ +/* $NetBSD: sco_socket.c,v 1.35 2015/04/24 22:32:37 rtr Exp $ */ /*- * Copyright (c) 2006 Itronix Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sco_socket.c,v 1.34 2015/04/03 20:01:07 rtr Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sco_socket.c,v 1.35 2015/04/24 22:32:37 rtr Exp $"); /* load symbolic names */ #ifdef BLUETOOTH_DEBUG @@ -108,10 +108,9 @@ sco_detach(struct socket *so) } static int -sco_accept(struct socket *so, struct mbuf *nam) +sco_accept(struct socket *so, struct sockaddr *nam) { struct sco_pcb *pcb = so->so_pcb; - struct sockaddr_bt *sa; KASSERT(solocked(so)); KASSERT(nam != NULL); @@ -119,9 +118,7 @@ sco_accept(struct socket *so, struct mbu if (pcb == NULL) return EINVAL; - sa = mtod(nam, struct sockaddr_bt *); - nam->m_len = sizeof(struct sockaddr_bt); - return sco_peeraddr_pcb(pcb, sa); + return sco_peeraddr_pcb(pcb, (struct sockaddr_bt *)nam); } static int @@ -248,33 +245,27 @@ sco_stat(struct socket *so, struct stat } static int -sco_peeraddr(struct socket *so, struct mbuf *nam) +sco_peeraddr(struct socket *so, struct sockaddr *nam) { struct sco_pcb *pcb = (struct sco_pcb *)so->so_pcb; - struct sockaddr_bt *sa; KASSERT(solocked(so)); KASSERT(pcb != NULL); KASSERT(nam != NULL); - sa = mtod(nam, struct sockaddr_bt *); - nam->m_len = sizeof(struct sockaddr_bt); - return sco_peeraddr_pcb(pcb, sa); + return sco_peeraddr_pcb(pcb, (struct sockaddr_bt *)nam); } static int -sco_sockaddr(struct socket *so, struct mbuf *nam) +sco_sockaddr(struct socket *so, struct sockaddr *nam) { struct sco_pcb *pcb = (struct sco_pcb *)so->so_pcb; - struct sockaddr_bt *sa; KASSERT(solocked(so)); KASSERT(pcb != NULL); KASSERT(nam != NULL); - sa = mtod(nam, struct sockaddr_bt *); - nam->m_len = sizeof(struct sockaddr_bt); - return sco_sockaddr_pcb(pcb, sa); + return sco_sockaddr_pcb(pcb, (struct sockaddr_bt *)nam); } static int Index: src/sys/netinet/dccp_usrreq.c diff -u src/sys/netinet/dccp_usrreq.c:1.2 src/sys/netinet/dccp_usrreq.c:1.3 --- src/sys/netinet/dccp_usrreq.c:1.2 Sat Apr 4 04:33:38 2015 +++ src/sys/netinet/dccp_usrreq.c Fri Apr 24 22:32:37 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.2 2015/04/04 04:33:38 rtr Exp $ */ +/* $NetBSD: dccp_usrreq.c,v 1.3 2015/04/24 22:32:37 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.2 2015/04/04 04:33:38 rtr Exp $"); +__KERNEL_RCSID(0, "$NetBSD: dccp_usrreq.c,v 1.3 2015/04/24 22:32:37 rtr Exp $"); #include "opt_inet.h" #include "opt_dccp.h" @@ -2270,7 +2270,7 @@ dccp_listen(struct socket *so, struct lw * Accepts a connection (accept system call) */ static int -dccp_accept(struct socket *so, struct mbuf *nam) +dccp_accept(struct socket *so, struct sockaddr *nam) { struct inpcb *inp = NULL; int error = 0; @@ -2293,7 +2293,7 @@ dccp_accept(struct socket *so, struct mb } INP_LOCK(inp); INP_INFO_RUNLOCK(&dccpbinfo); - in_setpeeraddr(inp, nam); + in_setpeeraddr(inp, (struct sockaddr_in *)nam); return error; } @@ -2912,24 +2912,26 @@ dccp_stat(struct socket *so, struct stat } static int -dccp_peeraddr(struct socket *so, struct mbuf *nam) +dccp_peeraddr(struct socket *so, struct sockaddr *nam) { + KASSERT(solocked(so)); KASSERT(sotoinpcb(so) != NULL); KASSERT(nam != NULL); - in_setpeeraddr(sotoinpcb(so), nam); + in_setpeeraddr(sotoinpcb(so), (struct sockaddr_in *)nam); return 0; } static int -dccp_sockaddr(struct socket *so, struct mbuf *nam) +dccp_sockaddr(struct socket *so, struct sockaddr *nam) { + KASSERT(solocked(so)); KASSERT(sotoinpcb(so) != NULL); KASSERT(nam != NULL); - in_setsockaddr(sotoinpcb(so), nam); + in_setsockaddr(sotoinpcb(so), (struct sockaddr_in *)nam); return 0; } Index: src/sys/netinet/in_pcb.c diff -u src/sys/netinet/in_pcb.c:1.156 src/sys/netinet/in_pcb.c:1.157 --- src/sys/netinet/in_pcb.c:1.156 Fri Apr 3 20:01:07 2015 +++ src/sys/netinet/in_pcb.c Fri Apr 24 22:32:37 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: in_pcb.c,v 1.156 2015/04/03 20:01:07 rtr Exp $ */ +/* $NetBSD: in_pcb.c,v 1.157 2015/04/24 22:32:37 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.156 2015/04/03 20:01:07 rtr Exp $"); +__KERNEL_RCSID(0, "$NetBSD: in_pcb.c,v 1.157 2015/04/24 22:32:37 rtr Exp $"); #include "opt_inet.h" #include "opt_ipsec.h" @@ -611,29 +611,23 @@ in_pcbdetach(void *v) } void -in_setsockaddr(struct inpcb *inp, struct mbuf *nam) +in_setsockaddr(struct inpcb *inp, struct sockaddr_in *sin) { - struct sockaddr_in *sin; if (inp->inp_af != AF_INET) return; - sin = mtod(nam, struct sockaddr_in *); sockaddr_in_init(sin, &inp->inp_laddr, inp->inp_lport); - nam->m_len = sin->sin_len; } void -in_setpeeraddr(struct inpcb *inp, struct mbuf *nam) +in_setpeeraddr(struct inpcb *inp, struct sockaddr_in *sin) { - struct sockaddr_in *sin; if (inp->inp_af != AF_INET) return; - sin = mtod(nam, struct sockaddr_in *); sockaddr_in_init(sin, &inp->inp_faddr, inp->inp_fport); - nam->m_len = sin->sin_len; } /* Index: src/sys/netinet/in_pcb.h diff -u src/sys/netinet/in_pcb.h:1.56 src/sys/netinet/in_pcb.h:1.57 --- src/sys/netinet/in_pcb.h:1.56 Fri Apr 3 20:01:07 2015 +++ src/sys/netinet/in_pcb.h Fri Apr 24 22:32:37 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: in_pcb.h,v 1.56 2015/04/03 20:01:07 rtr Exp $ */ +/* $NetBSD: in_pcb.h,v 1.57 2015/04/24 22:32:37 rtr Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -155,8 +155,8 @@ void in_pcbpurgeif(struct inpcbtable *, void in_purgeifmcast(struct ip_moptions *, struct ifnet *); void in_pcbstate(struct inpcb *, int); void in_rtchange(struct inpcb *, int); -void in_setpeeraddr(struct inpcb *, struct mbuf *); -void in_setsockaddr(struct inpcb *, struct mbuf *); +void in_setpeeraddr(struct inpcb *, struct sockaddr_in *); +void in_setsockaddr(struct inpcb *, struct sockaddr_in *); struct rtentry * in_pcbrtentry(struct inpcb *); #endif Index: src/sys/netinet/raw_ip.c diff -u src/sys/netinet/raw_ip.c:1.147 src/sys/netinet/raw_ip.c:1.148 --- src/sys/netinet/raw_ip.c:1.147 Fri Apr 3 20:01:07 2015 +++ src/sys/netinet/raw_ip.c Fri Apr 24 22:32:37 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: raw_ip.c,v 1.147 2015/04/03 20:01:07 rtr Exp $ */ +/* $NetBSD: raw_ip.c,v 1.148 2015/04/24 22:32:37 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.147 2015/04/03 20:01:07 rtr Exp $"); +__KERNEL_RCSID(0, "$NetBSD: raw_ip.c,v 1.148 2015/04/24 22:32:37 rtr Exp $"); #include "opt_inet.h" #include "opt_compat_netbsd.h" @@ -547,7 +547,7 @@ rip_detach(struct socket *so) } static int -rip_accept(struct socket *so, struct mbuf *nam) +rip_accept(struct socket *so, struct sockaddr *nam) { KASSERT(solocked(so)); @@ -688,7 +688,7 @@ rip_stat(struct socket *so, struct stat } static int -rip_peeraddr(struct socket *so, struct mbuf *nam) +rip_peeraddr(struct socket *so, struct sockaddr *nam) { int s; @@ -697,14 +697,14 @@ rip_peeraddr(struct socket *so, struct m KASSERT(nam != NULL); s = splsoftnet(); - in_setpeeraddr(sotoinpcb(so), nam); + in_setpeeraddr(sotoinpcb(so), (struct sockaddr_in *)nam); splx(s); return 0; } static int -rip_sockaddr(struct socket *so, struct mbuf *nam) +rip_sockaddr(struct socket *so, struct sockaddr *nam) { int s; @@ -713,7 +713,7 @@ rip_sockaddr(struct socket *so, struct m KASSERT(nam != NULL); s = splsoftnet(); - in_setsockaddr(sotoinpcb(so), nam); + in_setsockaddr(sotoinpcb(so), (struct sockaddr_in *)nam); splx(s); return 0; Index: src/sys/netinet/tcp_usrreq.c diff -u src/sys/netinet/tcp_usrreq.c:1.205 src/sys/netinet/tcp_usrreq.c:1.206 --- src/sys/netinet/tcp_usrreq.c:1.205 Fri Apr 3 20:01:07 2015 +++ src/sys/netinet/tcp_usrreq.c Fri Apr 24 22:32:37 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: tcp_usrreq.c,v 1.205 2015/04/03 20:01:07 rtr Exp $ */ +/* $NetBSD: tcp_usrreq.c,v 1.206 2015/04/24 22:32:37 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.205 2015/04/03 20:01:07 rtr Exp $"); +__KERNEL_RCSID(0, "$NetBSD: tcp_usrreq.c,v 1.206 2015/04/24 22:32:37 rtr Exp $"); #include "opt_inet.h" #include "opt_tcp_debug.h" @@ -674,7 +674,7 @@ tcp_detach(struct socket *so) } static int -tcp_accept(struct socket *so, struct mbuf *nam) +tcp_accept(struct socket *so, struct sockaddr *nam) { struct inpcb *inp = NULL; struct in6pcb *in6p = NULL; @@ -696,12 +696,12 @@ tcp_accept(struct socket *so, struct mbu s = splsoftnet(); #ifdef INET if (inp) { - in_setpeeraddr(inp, nam); + in_setpeeraddr(inp, (struct sockaddr_in *)nam); } #endif #ifdef INET6 if (in6p) { - in6_setpeeraddr(in6p, nam); + in6_setpeeraddr(in6p, (struct sockaddr_in6 *)nam); } #endif tcp_debug_trace(so, tp, ostate, PRU_ACCEPT); @@ -1023,7 +1023,7 @@ tcp_stat(struct socket *so, struct stat } static int -tcp_peeraddr(struct socket *so, struct mbuf *nam) +tcp_peeraddr(struct socket *so, struct sockaddr *nam) { struct inpcb *inp = NULL; struct in6pcb *in6p = NULL; @@ -1039,12 +1039,14 @@ tcp_peeraddr(struct socket *so, struct m s = splsoftnet(); #ifdef INET - if (inp) - in_setpeeraddr(inp, nam); + if (inp) { + in_setpeeraddr(inp, (struct sockaddr_in *)nam); + } #endif #ifdef INET6 - if (in6p) - in6_setpeeraddr(in6p, nam); + if (in6p) { + in6_setpeeraddr(in6p, (struct sockaddr_in6 *)nam); + } #endif tcp_debug_trace(so, tp, ostate, PRU_PEERADDR); splx(s); @@ -1053,7 +1055,7 @@ tcp_peeraddr(struct socket *so, struct m } static int -tcp_sockaddr(struct socket *so, struct mbuf *nam) +tcp_sockaddr(struct socket *so, struct sockaddr *nam) { struct inpcb *inp = NULL; struct in6pcb *in6p = NULL; @@ -1069,12 +1071,14 @@ tcp_sockaddr(struct socket *so, struct m s = splsoftnet(); #ifdef INET - if (inp) - in_setsockaddr(inp, nam); + if (inp) { + in_setsockaddr(inp, (struct sockaddr_in *)nam); + } #endif #ifdef INET6 - if (in6p) - in6_setsockaddr(in6p, nam); + if (in6p) { + in6_setsockaddr(in6p, (struct sockaddr_in6 *)nam); + } #endif tcp_debug_trace(so, tp, ostate, PRU_SOCKADDR); splx(s); Index: src/sys/netinet/udp_usrreq.c diff -u src/sys/netinet/udp_usrreq.c:1.218 src/sys/netinet/udp_usrreq.c:1.219 --- src/sys/netinet/udp_usrreq.c:1.218 Fri Apr 3 20:01:07 2015 +++ src/sys/netinet/udp_usrreq.c Fri Apr 24 22:32:37 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: udp_usrreq.c,v 1.218 2015/04/03 20:01:07 rtr Exp $ */ +/* $NetBSD: udp_usrreq.c,v 1.219 2015/04/24 22:32:37 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.218 2015/04/03 20:01:07 rtr Exp $"); +__KERNEL_RCSID(0, "$NetBSD: udp_usrreq.c,v 1.219 2015/04/24 22:32:37 rtr Exp $"); #include "opt_inet.h" #include "opt_compat_netbsd.h" @@ -895,7 +895,7 @@ udp_detach(struct socket *so) } static int -udp_accept(struct socket *so, struct mbuf *nam) +udp_accept(struct socket *so, struct sockaddr *nam) { KASSERT(solocked(so)); @@ -1018,7 +1018,7 @@ udp_stat(struct socket *so, struct stat } static int -udp_peeraddr(struct socket *so, struct mbuf *nam) +udp_peeraddr(struct socket *so, struct sockaddr *nam) { int s; @@ -1027,14 +1027,14 @@ udp_peeraddr(struct socket *so, struct m KASSERT(nam != NULL); s = splsoftnet(); - in_setpeeraddr(sotoinpcb(so), nam); + in_setpeeraddr(sotoinpcb(so), (struct sockaddr_in *)nam); splx(s); return 0; } static int -udp_sockaddr(struct socket *so, struct mbuf *nam) +udp_sockaddr(struct socket *so, struct sockaddr *nam) { int s; @@ -1043,7 +1043,7 @@ udp_sockaddr(struct socket *so, struct m KASSERT(nam != NULL); s = splsoftnet(); - in_setsockaddr(sotoinpcb(so), nam); + in_setsockaddr(sotoinpcb(so), (struct sockaddr_in *)nam); splx(s); return 0; Index: src/sys/netinet6/dccp6_usrreq.c diff -u src/sys/netinet6/dccp6_usrreq.c:1.2 src/sys/netinet6/dccp6_usrreq.c:1.3 --- src/sys/netinet6/dccp6_usrreq.c:1.2 Sat Apr 4 04:33:39 2015 +++ src/sys/netinet6/dccp6_usrreq.c Fri Apr 24 22:32:37 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.2 2015/04/04 04:33:39 rtr Exp $ */ +/* $NetBSD: dccp6_usrreq.c,v 1.3 2015/04/24 22:32:37 rtr Exp $ */ /* * Copyright (C) 2003 WIDE Project. @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: dccp6_usrreq.c,v 1.2 2015/04/04 04:33:39 rtr Exp $"); +__KERNEL_RCSID(0, "$NetBSD: dccp6_usrreq.c,v 1.3 2015/04/24 22:32:37 rtr Exp $"); #include "opt_inet.h" #include "opt_dccp.h" @@ -262,7 +262,7 @@ dccp6_listen(struct socket *so, struct l } int -dccp6_accept(struct socket *so, struct mbuf *m) +dccp6_accept(struct socket *so, struct sockaddr *nam) { struct in6pcb *in6p = NULL; int error = 0; @@ -284,7 +284,7 @@ dccp6_accept(struct socket *so, struct m } INP_LOCK(inp); INP_INFO_RUNLOCK(&dccpbinfo); - in6_setpeeraddr(in6p, m); + in6_setpeeraddr(in6p, (struct sockaddr_in6 *)nam); INP_UNLOCK(inp); return error; @@ -420,24 +420,24 @@ dccp6_abort(struct socket *so) static int -dccp6_peeraddr(struct socket *so, struct mbuf *nam) +dccp6_peeraddr(struct socket *so, struct sockaddr *nam) { KASSERT(solocked(so)); KASSERT(sotoinpcb(so) != NULL); KASSERT(nam != NULL); - in6_setpeeraddr(sotoin6pcb(so), nam); + in6_setpeeraddr(sotoin6pcb(so), (struct sockaddr_in6 *)nam); return 0; } static int -dccp6_sockaddr(struct socket *so, struct mbuf *nam) +dccp6_sockaddr(struct socket *so, struct sockaddr *nam) { KASSERT(solocked(so)); KASSERT(sotoinpcb(so) != NULL); KASSERT(nam != NULL); - in6_setsockaddr(sotoin6pcb(so), nam); + in6_setsockaddr(sotoin6pcb(so), (struct sockaddr_in6 *)nam); return 0; } Index: src/sys/netinet6/in6_pcb.c diff -u src/sys/netinet6/in6_pcb.c:1.135 src/sys/netinet6/in6_pcb.c:1.136 --- src/sys/netinet6/in6_pcb.c:1.135 Fri Apr 3 20:01:07 2015 +++ src/sys/netinet6/in6_pcb.c Fri Apr 24 22:32:37 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: in6_pcb.c,v 1.135 2015/04/03 20:01:07 rtr Exp $ */ +/* $NetBSD: in6_pcb.c,v 1.136 2015/04/24 22:32:37 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.135 2015/04/03 20:01:07 rtr Exp $"); +__KERNEL_RCSID(0, "$NetBSD: in6_pcb.c,v 1.136 2015/04/24 22:32:37 rtr Exp $"); #include "opt_inet.h" #include "opt_ipsec.h" @@ -626,29 +626,23 @@ in6_pcbdetach(struct in6pcb *in6p) } void -in6_setsockaddr(struct in6pcb *in6p, struct mbuf *nam) +in6_setsockaddr(struct in6pcb *in6p, struct sockaddr_in6 *sin6) { - struct sockaddr_in6 *sin6; if (in6p->in6p_af != AF_INET6) return; - nam->m_len = sizeof(*sin6); - sin6 = mtod(nam, struct sockaddr_in6 *); sockaddr_in6_init(sin6, &in6p->in6p_laddr, in6p->in6p_lport, 0, 0); (void)sa6_recoverscope(sin6); /* XXX: should catch errors */ } void -in6_setpeeraddr(struct in6pcb *in6p, struct mbuf *nam) +in6_setpeeraddr(struct in6pcb *in6p, struct sockaddr_in6 *sin6) { - struct sockaddr_in6 *sin6; if (in6p->in6p_af != AF_INET6) return; - nam->m_len = sizeof(*sin6); - sin6 = mtod(nam, struct sockaddr_in6 *); sockaddr_in6_init(sin6, &in6p->in6p_faddr, in6p->in6p_fport, 0, 0); (void)sa6_recoverscope(sin6); /* XXX: should catch errors */ } Index: src/sys/netinet6/in6_pcb.h diff -u src/sys/netinet6/in6_pcb.h:1.42 src/sys/netinet6/in6_pcb.h:1.43 --- src/sys/netinet6/in6_pcb.h:1.42 Fri Apr 3 20:01:07 2015 +++ src/sys/netinet6/in6_pcb.h Fri Apr 24 22:32:37 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: in6_pcb.h,v 1.42 2015/04/03 20:01:07 rtr Exp $ */ +/* $NetBSD: in6_pcb.h,v 1.43 2015/04/24 22:32:37 rtr Exp $ */ /* $KAME: in6_pcb.h,v 1.45 2001/02/09 05:59:46 itojun Exp $ */ /* @@ -169,8 +169,8 @@ void in6_pcbpurgeif0(struct inpcbtable * void in6_pcbpurgeif(struct inpcbtable *, struct ifnet *); void in6_pcbstate(struct in6pcb *, int); void in6_rtchange(struct in6pcb *, int); -void in6_setpeeraddr(struct in6pcb *, struct mbuf *); -void in6_setsockaddr(struct in6pcb *, struct mbuf *); +void in6_setpeeraddr(struct in6pcb *, struct sockaddr_in6 *); +void in6_setsockaddr(struct in6pcb *, struct sockaddr_in6 *); /* in in6_src.c */ int in6_selecthlim(struct in6pcb *, struct ifnet *); Index: src/sys/netinet6/raw_ip6.c diff -u src/sys/netinet6/raw_ip6.c:1.137 src/sys/netinet6/raw_ip6.c:1.138 --- src/sys/netinet6/raw_ip6.c:1.137 Fri Apr 3 20:01:07 2015 +++ src/sys/netinet6/raw_ip6.c Fri Apr 24 22:32:37 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: raw_ip6.c,v 1.137 2015/04/03 20:01:07 rtr Exp $ */ +/* $NetBSD: raw_ip6.c,v 1.138 2015/04/24 22:32:37 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.137 2015/04/03 20:01:07 rtr Exp $"); +__KERNEL_RCSID(0, "$NetBSD: raw_ip6.c,v 1.138 2015/04/24 22:32:37 rtr Exp $"); #include "opt_ipsec.h" @@ -645,7 +645,7 @@ rip6_detach(struct socket *so) } static int -rip6_accept(struct socket *so, struct mbuf *nam) +rip6_accept(struct socket *so, struct sockaddr *nam) { KASSERT(solocked(so)); @@ -815,24 +815,24 @@ rip6_stat(struct socket *so, struct stat } static int -rip6_peeraddr(struct socket *so, struct mbuf *nam) +rip6_peeraddr(struct socket *so, struct sockaddr *nam) { KASSERT(solocked(so)); KASSERT(sotoin6pcb(so) != NULL); KASSERT(nam != NULL); - in6_setpeeraddr(sotoin6pcb(so), nam); + in6_setpeeraddr(sotoin6pcb(so), (struct sockaddr_in6 *)nam); return 0; } static int -rip6_sockaddr(struct socket *so, struct mbuf *nam) +rip6_sockaddr(struct socket *so, struct sockaddr *nam) { KASSERT(solocked(so)); KASSERT(sotoin6pcb(so) != NULL); KASSERT(nam != NULL); - in6_setsockaddr(sotoin6pcb(so), nam); + in6_setsockaddr(sotoin6pcb(so), (struct sockaddr_in6 *)nam); return 0; } Index: src/sys/netinet6/udp6_usrreq.c diff -u src/sys/netinet6/udp6_usrreq.c:1.117 src/sys/netinet6/udp6_usrreq.c:1.118 --- src/sys/netinet6/udp6_usrreq.c:1.117 Fri Apr 3 20:01:07 2015 +++ src/sys/netinet6/udp6_usrreq.c Fri Apr 24 22:32:37 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: udp6_usrreq.c,v 1.117 2015/04/03 20:01:07 rtr Exp $ */ +/* $NetBSD: udp6_usrreq.c,v 1.118 2015/04/24 22:32:37 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.117 2015/04/03 20:01:07 rtr Exp $"); +__KERNEL_RCSID(0, "$NetBSD: udp6_usrreq.c,v 1.118 2015/04/24 22:32:37 rtr Exp $"); #include "opt_inet.h" #include "opt_inet_csum.h" @@ -688,7 +688,7 @@ udp6_detach(struct socket *so) } static int -udp6_accept(struct socket *so, struct mbuf *nam) +udp6_accept(struct socket *so, struct sockaddr *nam) { KASSERT(solocked(so)); @@ -825,24 +825,24 @@ udp6_stat(struct socket *so, struct stat } static int -udp6_peeraddr(struct socket *so, struct mbuf *nam) +udp6_peeraddr(struct socket *so, struct sockaddr *nam) { KASSERT(solocked(so)); KASSERT(sotoin6pcb(so) != NULL); KASSERT(nam != NULL); - in6_setpeeraddr(sotoin6pcb(so), nam); + in6_setpeeraddr(sotoin6pcb(so), (struct sockaddr_in6 *)nam); return 0; } static int -udp6_sockaddr(struct socket *so, struct mbuf *nam) +udp6_sockaddr(struct socket *so, struct sockaddr *nam) { KASSERT(solocked(so)); KASSERT(sotoin6pcb(so) != NULL); KASSERT(nam != NULL); - in6_setsockaddr(sotoin6pcb(so), nam); + in6_setsockaddr(sotoin6pcb(so), (struct sockaddr_in6 *)nam); return 0; } Index: src/sys/netipsec/keysock.c diff -u src/sys/netipsec/keysock.c:1.45 src/sys/netipsec/keysock.c:1.46 --- src/sys/netipsec/keysock.c:1.45 Fri Apr 3 20:01:07 2015 +++ src/sys/netipsec/keysock.c Fri Apr 24 22:32:38 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: keysock.c,v 1.45 2015/04/03 20:01:07 rtr Exp $ */ +/* $NetBSD: keysock.c,v 1.46 2015/04/24 22:32:38 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.45 2015/04/03 20:01:07 rtr Exp $"); +__KERNEL_RCSID(0, "$NetBSD: keysock.c,v 1.46 2015/04/24 22:32:38 rtr Exp $"); /* This code has derived from sys/net/rtsock.c on FreeBSD2.2.5 */ @@ -483,7 +483,7 @@ key_detach(struct socket *so) } static int -key_accept(struct socket *so, struct mbuf *nam) +key_accept(struct socket *so, struct sockaddr *nam) { KASSERT(solocked(so)); @@ -583,7 +583,7 @@ key_stat(struct socket *so, struct stat } static int -key_peeraddr(struct socket *so, struct mbuf *nam) +key_peeraddr(struct socket *so, struct sockaddr *nam) { struct rawcb *rp = sotorawcb(so); @@ -599,7 +599,7 @@ key_peeraddr(struct socket *so, struct m } static int -key_sockaddr(struct socket *so, struct mbuf *nam) +key_sockaddr(struct socket *so, struct sockaddr *nam) { struct rawcb *rp = sotorawcb(so); Index: src/sys/netmpls/mpls_proto.c diff -u src/sys/netmpls/mpls_proto.c:1.25 src/sys/netmpls/mpls_proto.c:1.26 --- src/sys/netmpls/mpls_proto.c:1.25 Fri Apr 3 20:01:07 2015 +++ src/sys/netmpls/mpls_proto.c Fri Apr 24 22:32:38 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: mpls_proto.c,v 1.25 2015/04/03 20:01:07 rtr Exp $ */ +/* $NetBSD: mpls_proto.c,v 1.26 2015/04/24 22:32:38 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.25 2015/04/03 20:01:07 rtr Exp $"); +__KERNEL_RCSID(0, "$NetBSD: mpls_proto.c,v 1.26 2015/04/24 22:32:38 rtr Exp $"); #include "opt_inet.h" #include "opt_mbuftrace.h" @@ -95,7 +95,7 @@ mpls_detach(struct socket *so) } static int -mpls_accept(struct socket *so, struct mbuf *nam) +mpls_accept(struct socket *so, struct sockaddr *nam) { KASSERT(solocked(so)); @@ -173,7 +173,7 @@ mpls_stat(struct socket *so, struct stat } static int -mpls_peeraddr(struct socket *so, struct mbuf *nam) +mpls_peeraddr(struct socket *so, struct sockaddr *nam) { KASSERT(solocked(so)); @@ -181,7 +181,7 @@ mpls_peeraddr(struct socket *so, struct } static int -mpls_sockaddr(struct socket *so, struct mbuf *nam) +mpls_sockaddr(struct socket *so, struct sockaddr *nam) { KASSERT(solocked(so)); Index: src/sys/netnatm/natm.c diff -u src/sys/netnatm/natm.c:1.46 src/sys/netnatm/natm.c:1.47 --- src/sys/netnatm/natm.c:1.46 Fri Apr 3 20:01:07 2015 +++ src/sys/netnatm/natm.c Fri Apr 24 22:32:38 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: natm.c,v 1.46 2015/04/03 20:01:07 rtr Exp $ */ +/* $NetBSD: natm.c,v 1.47 2015/04/24 22:32:38 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.46 2015/04/03 20:01:07 rtr Exp $"); +__KERNEL_RCSID(0, "$NetBSD: natm.c,v 1.47 2015/04/24 22:32:38 rtr Exp $"); #include <sys/param.h> #include <sys/kmem.h> @@ -98,7 +98,7 @@ natm_detach(struct socket *so) } static int -natm_accept(struct socket *so, struct mbuf *nam) +natm_accept(struct socket *so, struct sockaddr *nam) { KASSERT(solocked(so)); @@ -299,18 +299,17 @@ natm_stat(struct socket *so, struct stat } static int -natm_peeraddr(struct socket *so, struct mbuf *nam) +natm_peeraddr(struct socket *so, struct sockaddr *nam) { struct natmpcb *npcb = (struct natmpcb *) so->so_pcb; - struct sockaddr_natm *snatm; + struct sockaddr_natm *snatm = (struct sockaddr_natm *)nam; KASSERT(solocked(so)); KASSERT(pcb != NULL); KASSERT(nam != NULL); - snatm = mtod(nam, struct sockaddr_natm *); memset(snatm, 0, sizeof(*snatm)); - nam->m_len = snatm->snatm_len = sizeof(*snatm); + snatm->snatm_len = sizeof(*snatm); snatm->snatm_family = AF_NATM; memcpy(snatm->snatm_if, npcb->npcb_ifp->if_xname, sizeof(snatm->snatm_if)); snatm->snatm_vci = npcb->npcb_vci; @@ -319,7 +318,7 @@ natm_peeraddr(struct socket *so, struct } static int -natm_sockaddr(struct socket *so, struct mbuf *nam) +natm_sockaddr(struct socket *so, struct sockaddr *nam) { KASSERT(solocked(so)); Index: src/sys/rump/net/lib/libsockin/sockin.c diff -u src/sys/rump/net/lib/libsockin/sockin.c:1.59 src/sys/rump/net/lib/libsockin/sockin.c:1.60 --- src/sys/rump/net/lib/libsockin/sockin.c:1.59 Fri Apr 3 20:01:08 2015 +++ src/sys/rump/net/lib/libsockin/sockin.c Fri Apr 24 22:32:38 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: sockin.c,v 1.59 2015/04/03 20:01:08 rtr Exp $ */ +/* $NetBSD: sockin.c,v 1.60 2015/04/24 22:32:38 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.59 2015/04/03 20:01:08 rtr Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sockin.c,v 1.60 2015/04/24 22:32:38 rtr Exp $"); #include <sys/param.h> #include <sys/condvar.h> @@ -68,7 +68,7 @@ static int sockin_do_init(void); static void sockin_init(void); static int sockin_attach(struct socket *, int); static void sockin_detach(struct socket *); -static int sockin_accept(struct socket *, struct mbuf *); +static int sockin_accept(struct socket *, struct sockaddr *); 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 *); @@ -78,8 +78,8 @@ static int sockin_shutdown(struct socket static int sockin_abort(struct socket *); static int sockin_ioctl(struct socket *, u_long, void *, struct ifnet *); static int sockin_stat(struct socket *, struct stat *); -static int sockin_peeraddr(struct socket *, struct mbuf *); -static int sockin_sockaddr(struct socket *, struct mbuf *); +static int sockin_peeraddr(struct socket *, struct sockaddr *); +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 *, @@ -485,7 +485,7 @@ sockin_detach(struct socket *so) } static int -sockin_accept(struct socket *so, struct mbuf *nam) +sockin_accept(struct socket *so, struct sockaddr *nam) { KASSERT(solocked(so)); @@ -574,32 +574,32 @@ sockin_stat(struct socket *so, struct st } static int -sockin_peeraddr(struct socket *so, struct mbuf *nam) +sockin_peeraddr(struct socket *so, struct sockaddr *nam) { KASSERT(solocked(so)); int error = 0; - int slen = nam->m_len; + int slen = nam->sa_len; error = rumpcomp_sockin_getname(SO2S(so), - mtod(nam, struct sockaddr *), &slen, RUMPCOMP_SOCKIN_PEERNAME); + nam, &slen, RUMPCOMP_SOCKIN_PEERNAME); if (error == 0) - nam->m_len = slen; + nam->sa_len = slen; return error; } static int -sockin_sockaddr(struct socket *so, struct mbuf *nam) +sockin_sockaddr(struct socket *so, struct sockaddr *nam) { KASSERT(solocked(so)); int error = 0; - int slen = nam->m_len; + int slen = nam->sa_len; error = rumpcomp_sockin_getname(SO2S(so), - mtod(nam, struct sockaddr *), &slen, RUMPCOMP_SOCKIN_SOCKNAME); + nam, &slen, RUMPCOMP_SOCKIN_SOCKNAME); if (error == 0) - nam->m_len = slen; + nam->sa_len = slen; return error; } Index: src/sys/sys/param.h diff -u src/sys/sys/param.h:1.473 src/sys/sys/param.h:1.474 --- src/sys/sys/param.h:1.473 Thu Apr 23 23:23:20 2015 +++ src/sys/sys/param.h Fri Apr 24 22:32:38 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: param.h,v 1.473 2015/04/23 23:23:20 pgoyette Exp $ */ +/* $NetBSD: param.h,v 1.474 2015/04/24 22:32:38 rtr Exp $ */ /*- * Copyright (c) 1982, 1986, 1989, 1993 @@ -63,7 +63,7 @@ * 2.99.9 (299000900) */ -#define __NetBSD_Version__ 799001100 /* NetBSD 7.99.11 */ +#define __NetBSD_Version__ 799001200 /* NetBSD 7.99.12 */ #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.61 src/sys/sys/protosw.h:1.62 --- src/sys/sys/protosw.h:1.61 Fri Apr 3 20:01:08 2015 +++ src/sys/sys/protosw.h Fri Apr 24 22:32:38 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: protosw.h,v 1.61 2015/04/03 20:01:08 rtr Exp $ */ +/* $NetBSD: protosw.h,v 1.62 2015/04/24 22:32:38 rtr Exp $ */ /*- * Copyright (c) 1982, 1986, 1993 @@ -238,7 +238,7 @@ static const char * const prcorequests[] struct pr_usrreqs { int (*pr_attach)(struct socket *, int); void (*pr_detach)(struct socket *); - int (*pr_accept)(struct socket *, struct mbuf *); + int (*pr_accept)(struct socket *, struct sockaddr *); int (*pr_connect)(struct socket *, struct mbuf *, struct lwp *); int (*pr_connect2)(struct socket *, struct socket *); int (*pr_bind)(struct socket *, struct sockaddr *, struct lwp *); @@ -248,8 +248,8 @@ struct pr_usrreqs { int (*pr_abort)(struct socket *); int (*pr_ioctl)(struct socket *, u_long, void *, struct ifnet *); int (*pr_stat)(struct socket *, struct stat *); - int (*pr_peeraddr)(struct socket *, struct mbuf *); - int (*pr_sockaddr)(struct socket *, struct mbuf *); + int (*pr_peeraddr)(struct socket *, struct sockaddr *); + 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 *, @@ -308,7 +308,8 @@ name##_detach_wrapper(struct socket *a) KERNEL_UNLOCK_ONE(NULL); \ } \ static int \ -name##_accept_wrapper(struct socket *a, struct mbuf *b) \ +name##_accept_wrapper(struct socket *a, \ + struct sockaddr *b) \ { \ int rv; \ KERNEL_LOCK(1, NULL); \ @@ -402,7 +403,8 @@ name##_stat_wrapper(struct socket *a, st return rv; \ } \ static int \ -name##_peeraddr_wrapper(struct socket *a, struct mbuf *b) \ +name##_peeraddr_wrapper(struct socket *a, \ + struct sockaddr *b) \ { \ int rv; \ KERNEL_LOCK(1, NULL); \ @@ -411,7 +413,8 @@ name##_peeraddr_wrapper(struct socket *a return rv; \ } \ static int \ -name##_sockaddr_wrapper(struct socket *a, struct mbuf *b) \ +name##_sockaddr_wrapper(struct socket *a, \ + struct sockaddr *b) \ { \ int rv; \ KERNEL_LOCK(1, NULL); \ Index: src/sys/sys/socketvar.h diff -u src/sys/sys/socketvar.h:1.136 src/sys/sys/socketvar.h:1.137 --- src/sys/sys/socketvar.h:1.136 Fri Apr 3 20:01:08 2015 +++ src/sys/sys/socketvar.h Fri Apr 24 22:32:38 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: socketvar.h,v 1.136 2015/04/03 20:01:08 rtr Exp $ */ +/* $NetBSD: socketvar.h,v 1.137 2015/04/24 22:32:38 rtr Exp $ */ /*- * Copyright (c) 2008, 2009 The NetBSD Foundation, Inc. @@ -287,7 +287,7 @@ void soinit(void); void soinit1(void); void soinit2(void); int soabort(struct socket *); -int soaccept(struct socket *, struct mbuf *); +int soaccept(struct socket *, struct sockaddr *); int sofamily(const struct socket *); int sobind(struct socket *, struct sockaddr *, struct lwp *); void socantrcvmore(struct socket *); @@ -348,15 +348,15 @@ int copyout_sockname(struct sockaddr *, int copyout_msg_control(struct lwp *, struct msghdr *, struct mbuf *); void free_control_mbuf(struct lwp *, struct mbuf *, struct mbuf *); -int do_sys_getpeername(int, struct mbuf **); -int do_sys_getsockname(int, struct mbuf **); +int do_sys_getpeername(int, struct sockaddr *); +int do_sys_getsockname(int, struct sockaddr *); int do_sys_sendmsg(struct lwp *, int, struct msghdr *, int, register_t *); int do_sys_recvmsg(struct lwp *, int, struct msghdr *, struct mbuf **, 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_accept(struct lwp *, int, struct mbuf **, register_t *, +int do_sys_accept(struct lwp *, int, struct sockaddr *, register_t *, const sigset_t *, int, int); /*