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