summaryrefslogtreecommitdiff
path: root/sys/netbt
diff options
context:
space:
mode:
authorrtr <rtr@NetBSD.org>2015-04-03 20:01:07 +0000
committerrtr <rtr@NetBSD.org>2015-04-03 20:01:07 +0000
commit0da58ac00a9b5753aba6c2f4714b9d499759d1f2 (patch)
treef85b2abd805d39ad26a562d1836377ec5f5a012d /sys/netbt
parent96d58810e5e839733058d3448402f7aac437b4ea (diff)
* change pr_bind to accept struct sockaddr * instead of struct mbuf *
* update protocol bind implementations to use/expect sockaddr * instead of mbuf * * introduce sockaddr_big struct for storage of addr data passed via sys_bind; sockaddr_big is of sufficient size and alignment to accommodate all addr data sizes received. * modify sys_bind to allocate sockaddr_big instead of using an mbuf. * bump kernel version to 7.99.9 for change to pr_bind() parameter type. Patch posted to tech-net@ http://mail-index.netbsd.org/tech-net/2015/03/15/msg005004.html The choice to use a new structure sockaddr_big has been retained since changing sockaddr_storage size would lead to unnecessary ABI change. The use of the new structure does not preclude future work that increases the size of sockaddr_storage and at that time sockaddr_big may be trivially replaced. Tested by mrg@ and myself, discussed with rmind@, posted to tech-net@
Diffstat (limited to 'sys/netbt')
-rw-r--r--sys/netbt/hci_socket.c9
-rw-r--r--sys/netbt/l2cap_socket.c9
-rw-r--r--sys/netbt/rfcomm_socket.c9
-rw-r--r--sys/netbt/sco_socket.c9
4 files changed, 16 insertions, 20 deletions
diff --git a/sys/netbt/hci_socket.c b/sys/netbt/hci_socket.c
index 36185167dbc..e071751f6d9 100644
--- a/sys/netbt/hci_socket.c
+++ b/sys/netbt/hci_socket.c
@@ -1,4 +1,4 @@
-/* $NetBSD: hci_socket.c,v 1.40 2014/08/09 05:33:01 rtr Exp $ */
+/* $NetBSD: hci_socket.c,v 1.41 2015/04/03 20:01:07 rtr Exp $ */
/*-
* Copyright (c) 2005 Iain Hibbert.
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: hci_socket.c,v 1.40 2014/08/09 05:33:01 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: hci_socket.c,v 1.41 2015/04/03 20:01:07 rtr Exp $");
/* load symbolic names */
#ifdef BLUETOOTH_DEBUG
@@ -492,16 +492,15 @@ hci_accept(struct socket *so, struct mbuf *nam)
}
static int
-hci_bind(struct socket *so, struct mbuf *nam, struct lwp *l)
+hci_bind(struct socket *so, struct sockaddr *nam, struct lwp *l)
{
struct hci_pcb *pcb = so->so_pcb;
- struct sockaddr_bt *sa;
+ struct sockaddr_bt *sa = (struct sockaddr_bt *)nam;
KASSERT(solocked(so));
KASSERT(pcb != NULL);
KASSERT(nam != NULL);
- sa = mtod(nam, struct sockaddr_bt *);
if (sa->bt_len != sizeof(struct sockaddr_bt))
return EINVAL;
diff --git a/sys/netbt/l2cap_socket.c b/sys/netbt/l2cap_socket.c
index 6f03db08167..7cfb3eb03de 100644
--- a/sys/netbt/l2cap_socket.c
+++ b/sys/netbt/l2cap_socket.c
@@ -1,4 +1,4 @@
-/* $NetBSD: l2cap_socket.c,v 1.31 2014/08/09 05:33:01 rtr Exp $ */
+/* $NetBSD: l2cap_socket.c,v 1.32 2015/04/03 20:01:07 rtr Exp $ */
/*-
* Copyright (c) 2005 Iain Hibbert.
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: l2cap_socket.c,v 1.31 2014/08/09 05:33:01 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: l2cap_socket.c,v 1.32 2015/04/03 20:01:07 rtr Exp $");
/* load symbolic names */
#ifdef BLUETOOTH_DEBUG
@@ -134,10 +134,10 @@ l2cap_accept(struct socket *so, struct mbuf *nam)
}
static int
-l2cap_bind(struct socket *so, struct mbuf *nam, struct lwp *l)
+l2cap_bind(struct socket *so, struct sockaddr *nam, struct lwp *l)
{
struct l2cap_channel *pcb = so->so_pcb;
- struct sockaddr_bt *sa;
+ struct sockaddr_bt *sa = (struct sockaddr_bt *)nam;
KASSERT(solocked(so));
KASSERT(nam != NULL);
@@ -145,7 +145,6 @@ l2cap_bind(struct socket *so, struct mbuf *nam, struct lwp *l)
if (pcb == NULL)
return EINVAL;
- sa = mtod(nam, struct sockaddr_bt *);
if (sa->bt_len != sizeof(struct sockaddr_bt))
return EINVAL;
diff --git a/sys/netbt/rfcomm_socket.c b/sys/netbt/rfcomm_socket.c
index 435a0b69833..aa8d5292940 100644
--- a/sys/netbt/rfcomm_socket.c
+++ b/sys/netbt/rfcomm_socket.c
@@ -1,4 +1,4 @@
-/* $NetBSD: rfcomm_socket.c,v 1.33 2014/08/09 05:33:01 rtr Exp $ */
+/* $NetBSD: rfcomm_socket.c,v 1.34 2015/04/03 20:01:07 rtr Exp $ */
/*-
* Copyright (c) 2006 Itronix Inc.
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rfcomm_socket.c,v 1.33 2014/08/09 05:33:01 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rfcomm_socket.c,v 1.34 2015/04/03 20:01:07 rtr Exp $");
/* load symbolic names */
#ifdef BLUETOOTH_DEBUG
@@ -142,10 +142,10 @@ rfcomm_accept(struct socket *so, struct mbuf *nam)
}
static int
-rfcomm_bind(struct socket *so, struct mbuf *nam, struct lwp *l)
+rfcomm_bind(struct socket *so, struct sockaddr *nam, struct lwp *l)
{
struct rfcomm_dlc *pcb = so->so_pcb;
- struct sockaddr_bt *sa;
+ struct sockaddr_bt *sa = (struct sockaddr_bt *)nam;
KASSERT(solocked(so));
KASSERT(nam != NULL);
@@ -153,7 +153,6 @@ rfcomm_bind(struct socket *so, struct mbuf *nam, struct lwp *l)
if (pcb == NULL)
return EINVAL;
- sa = mtod(nam, struct sockaddr_bt *);
if (sa->bt_len != sizeof(struct sockaddr_bt))
return EINVAL;
diff --git a/sys/netbt/sco_socket.c b/sys/netbt/sco_socket.c
index f2a9d828546..5cd7acd4332 100644
--- a/sys/netbt/sco_socket.c
+++ b/sys/netbt/sco_socket.c
@@ -1,4 +1,4 @@
-/* $NetBSD: sco_socket.c,v 1.33 2014/08/09 05:33:01 rtr Exp $ */
+/* $NetBSD: sco_socket.c,v 1.34 2015/04/03 20:01:07 rtr Exp $ */
/*-
* Copyright (c) 2006 Itronix Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sco_socket.c,v 1.33 2014/08/09 05:33:01 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sco_socket.c,v 1.34 2015/04/03 20:01:07 rtr Exp $");
/* load symbolic names */
#ifdef BLUETOOTH_DEBUG
@@ -125,10 +125,10 @@ sco_accept(struct socket *so, struct mbuf *nam)
}
static int
-sco_bind(struct socket *so, struct mbuf *nam, struct lwp *l)
+sco_bind(struct socket *so, struct sockaddr *nam, struct lwp *l)
{
struct sco_pcb *pcb = so->so_pcb;
- struct sockaddr_bt *sa;
+ struct sockaddr_bt *sa = (struct sockaddr_bt *)nam;
KASSERT(solocked(so));
KASSERT(nam != NULL);
@@ -136,7 +136,6 @@ sco_bind(struct socket *so, struct mbuf *nam, struct lwp *l)
if (pcb == NULL)
return EINVAL;
- sa = mtod(nam, struct sockaddr_bt *);
if (sa->bt_len != sizeof(struct sockaddr_bt))
return EINVAL;