Module Name: src Committed By: plunky Date: Thu Aug 20 21:40:59 UTC 2009
Modified Files: src/share/man/man4: bluetooth.4 src/sys/netbt: hci.h hci_event.c hci_ioctl.c src/usr.sbin/btconfig: btconfig.8 btconfig.c Log Message: add a per-unit master setting, to control requesting the master role when accepting connections. To generate a diff of this commit: cvs rdiff -u -r1.13 -r1.14 src/share/man/man4/bluetooth.4 cvs rdiff -u -r1.30 -r1.31 src/sys/netbt/hci.h cvs rdiff -u -r1.18 -r1.19 src/sys/netbt/hci_event.c cvs rdiff -u -r1.8 -r1.9 src/sys/netbt/hci_ioctl.c cvs rdiff -u -r1.10 -r1.11 src/usr.sbin/btconfig/btconfig.8 cvs rdiff -u -r1.13 -r1.14 src/usr.sbin/btconfig/btconfig.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/share/man/man4/bluetooth.4 diff -u src/share/man/man4/bluetooth.4:1.13 src/share/man/man4/bluetooth.4:1.14 --- src/share/man/man4/bluetooth.4:1.13 Mon May 4 20:42:00 2009 +++ src/share/man/man4/bluetooth.4 Thu Aug 20 21:40:59 2009 @@ -1,4 +1,4 @@ -.\" $NetBSD: bluetooth.4,v 1.13 2009/05/04 20:42:00 wiz Exp $ +.\" $NetBSD: bluetooth.4,v 1.14 2009/08/20 21:40:59 plunky Exp $ .\" .\" Copyright (c) 2006 Itronix Inc. .\" All rights reserved. @@ -338,6 +338,7 @@ #define BTF_INIT_FEATURES (1\*[Lt]\*[Lt]7) /* waiting for features */ #define BTF_NOOP_ON_RESET (1\*[Lt]\*[Lt]8) /* wait for No-op on reset */ #define BTF_INIT_COMMANDS (1\*[Lt]\*[Lt]9) /* waiting for supported commands */ +#define BTF_MASTER (1\*[Lt]\*[Lt]10) /* request Master role */ struct bt_stats { uint32_t err_tx; Index: src/sys/netbt/hci.h diff -u src/sys/netbt/hci.h:1.30 src/sys/netbt/hci.h:1.31 --- src/sys/netbt/hci.h:1.30 Mon Aug 10 18:25:20 2009 +++ src/sys/netbt/hci.h Thu Aug 20 21:40:59 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: hci.h,v 1.30 2009/08/10 18:25:20 plunky Exp $ */ +/* $NetBSD: hci.h,v 1.31 2009/08/20 21:40:59 plunky Exp $ */ /*- * Copyright (c) 2005 Iain Hibbert. @@ -54,7 +54,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: hci.h,v 1.30 2009/08/10 18:25:20 plunky Exp $ + * $Id: hci.h,v 1.31 2009/08/20 21:40:59 plunky Exp $ * $FreeBSD: src/sys/netgraph/bluetooth/include/ng_hci.h,v 1.6 2005/01/07 01:45:43 imp Exp $ */ @@ -2346,6 +2346,7 @@ #define BTF_INIT_FEATURES (1<<7) /* waiting for features */ #define BTF_POWER_UP_NOOP (1<<8) /* should wait for No-op on power up */ #define BTF_INIT_COMMANDS (1<<9) /* waiting for supported commands */ +#define BTF_MASTER (1<<10) /* request Master role */ #define BTF_INIT (BTF_INIT_BDADDR \ | BTF_INIT_BUFFER_SIZE \ Index: src/sys/netbt/hci_event.c diff -u src/sys/netbt/hci_event.c:1.18 src/sys/netbt/hci_event.c:1.19 --- src/sys/netbt/hci_event.c:1.18 Thu Apr 24 11:38:37 2008 +++ src/sys/netbt/hci_event.c Thu Aug 20 21:40:59 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: hci_event.c,v 1.18 2008/04/24 11:38:37 ad Exp $ */ +/* $NetBSD: hci_event.c,v 1.19 2009/08/20 21:40:59 plunky Exp $ */ /*- * Copyright (c) 2005 Iain Hibbert. @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: hci_event.c,v 1.18 2008/04/24 11:38:37 ad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: hci_event.c,v 1.19 2009/08/20 21:40:59 plunky Exp $"); #include <sys/param.h> #include <sys/kernel.h> @@ -653,7 +653,7 @@ } else { memset(&ap, 0, sizeof(ap)); bdaddr_copy(&ap.bdaddr, &ep.bdaddr); - if (unit->hci_link_policy & HCI_LINK_POLICY_ENABLE_ROLE_SWITCH) + if (unit->hci_flags & BTF_MASTER) ap.role = HCI_ROLE_MASTER; else ap.role = HCI_ROLE_SLAVE; Index: src/sys/netbt/hci_ioctl.c diff -u src/sys/netbt/hci_ioctl.c:1.8 src/sys/netbt/hci_ioctl.c:1.9 --- src/sys/netbt/hci_ioctl.c:1.8 Sun May 3 17:21:12 2009 +++ src/sys/netbt/hci_ioctl.c Thu Aug 20 21:40:59 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: hci_ioctl.c,v 1.8 2009/05/03 17:21:12 elad Exp $ */ +/* $NetBSD: hci_ioctl.c,v 1.9 2009/08/20 21:40:59 plunky Exp $ */ /*- * Copyright (c) 2005 Iain Hibbert. @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: hci_ioctl.c,v 1.8 2009/05/03 17:21:12 elad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: hci_ioctl.c,v 1.9 2009/08/20 21:40:59 plunky Exp $"); #include <sys/param.h> #include <sys/domain.h> @@ -234,7 +234,8 @@ unit->hci_flags &= ~BTF_UP; } - unit->hci_flags |= (btr->btr_flags & BTF_INIT); + unit->hci_flags &= ~BTF_MASTER; + unit->hci_flags |= (btr->btr_flags & (BTF_INIT | BTF_MASTER)); if ((unit->hci_flags & BTF_UP) == 0 && (btr->btr_flags & BTF_UP)) { Index: src/usr.sbin/btconfig/btconfig.8 diff -u src/usr.sbin/btconfig/btconfig.8:1.10 src/usr.sbin/btconfig/btconfig.8:1.11 --- src/usr.sbin/btconfig/btconfig.8:1.10 Thu Aug 20 11:45:51 2009 +++ src/usr.sbin/btconfig/btconfig.8 Thu Aug 20 21:40:59 2009 @@ -1,4 +1,4 @@ -.\" $NetBSD: btconfig.8,v 1.10 2009/08/20 11:45:51 plunky Exp $ +.\" $NetBSD: btconfig.8,v 1.11 2009/08/20 21:40:59 plunky Exp $ .\" .\" Copyright (c) 2006 Itronix Inc. .\" All rights reserved. @@ -93,11 +93,13 @@ Enable Role Switching. In a Bluetooth piconet there is one Master and up to seven Slaves, and normally the device that initiates a connection will take the Master role. -Enabling this option allows remote devices to switch connection roles -and become the Master rather than needing to form another piconet -which may cause problems. +Enabling this option allows remote devices to switch connection roles. .It Cm -switch Disable Role Switching. +.It Cm master +Request the Master role when accepting connections. +.It Cm -master +Do not request Master role. .It Cm hold Enable Hold Mode. .It Cm -hold Index: src/usr.sbin/btconfig/btconfig.c diff -u src/usr.sbin/btconfig/btconfig.c:1.13 src/usr.sbin/btconfig/btconfig.c:1.14 --- src/usr.sbin/btconfig/btconfig.c:1.13 Mon Jul 21 13:36:57 2008 +++ src/usr.sbin/btconfig/btconfig.c Thu Aug 20 21:40:59 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: btconfig.c,v 1.13 2008/07/21 13:36:57 lukem Exp $ */ +/* $NetBSD: btconfig.c,v 1.14 2009/08/20 21:40:59 plunky Exp $ */ /*- * Copyright (c) 2006 Itronix Inc. @@ -33,7 +33,7 @@ #include <sys/cdefs.h> __COPYRIGHT("@(#) Copyright (c) 2006 Itronix, Inc. All rights reserved."); -__RCSID("$NetBSD: btconfig.c,v 1.13 2008/07/21 13:36:57 lukem Exp $"); +__RCSID("$NetBSD: btconfig.c,v 1.14 2009/08/20 21:40:59 plunky Exp $"); #include <sys/ioctl.h> #include <sys/param.h> @@ -106,6 +106,7 @@ "\010INIT_FEATURES" \ "\011POWER_UP_NOOP" \ "\012INIT_COMMANDS" \ + "\013MASTER" \ "" /* authorisation (flag) */ @@ -118,6 +119,9 @@ int opt_pscan = 0; int opt_iscan = 0; +/* master role option */ +int opt_master = 0; + /* link policy options (flags) */ int opt_switch = 0; int opt_hold = 0; @@ -172,6 +176,8 @@ { "-pscan", P_CLR, &opt_pscan, NULL }, { "iscan", P_SET, &opt_iscan, NULL }, { "-iscan", P_CLR, &opt_iscan, NULL }, + { "master", P_SET, &opt_master, NULL }, + { "-master", P_CLR, &opt_master, NULL }, { "switch", P_SET, &opt_switch, NULL }, { "-switch", P_CLR, &opt_switch, NULL }, { "hold", P_SET, &opt_hold, NULL }, @@ -506,6 +512,16 @@ err(EXIT_FAILURE, "%s", btr.btr_name); } + if (opt_master) { + if (opt_master > 0) + btr.btr_flags |= BTF_MASTER; + else + btr.btr_flags &= ~BTF_MASTER; + + if (ioctl(hci, SIOCSBTFLAGS, &btr) < 0) + err(EXIT_FAILURE, "SIOCSBTFLAGS"); + } + if (opt_switch || opt_hold || opt_sniff || opt_park) { uint16_t val = btr.btr_link_policy;