Module Name: src Committed By: plunky Date: Fri May 27 09:28:43 UTC 2011
Modified Files: src/distrib/sets/lists/etc: mi src/etc/defaults: rc.conf src/etc/mtree: special src/etc/powerd/scripts: sleep_button src/etc/rc.d: Makefile btattach btconfig btdevctl bthcid sdpd src/share/man/man5: rc.conf.5 src/usr.sbin/postinstall: postinstall Added Files: src/etc/rc.d: bluetooth Log Message: provide a new 'bluetooth' rc.d script, to handle Bluetooth configuration in a simpler manner. This replaces btattach, btconfig, bthcid, btdevctl and sdpd scripts, and also should not require any configuration settings other than "bluetooth=YES", though the full range of configurations is still possible. To generate a diff of this commit: cvs rdiff -u -r1.223 -r1.224 src/distrib/sets/lists/etc/mi cvs rdiff -u -r1.112 -r1.113 src/etc/defaults/rc.conf cvs rdiff -u -r1.137 -r1.138 src/etc/mtree/special cvs rdiff -u -r1.7 -r1.8 src/etc/powerd/scripts/sleep_button cvs rdiff -u -r1.83 -r1.84 src/etc/rc.d/Makefile cvs rdiff -u -r0 -r1.1 src/etc/rc.d/bluetooth cvs rdiff -u -r1.1 -r1.2 src/etc/rc.d/btattach src/etc/rc.d/btconfig cvs rdiff -u -r1.4 -r1.5 src/etc/rc.d/btdevctl cvs rdiff -u -r1.2 -r1.3 src/etc/rc.d/bthcid cvs rdiff -u -r1.3 -r1.4 src/etc/rc.d/sdpd cvs rdiff -u -r1.146 -r1.147 src/share/man/man5/rc.conf.5 cvs rdiff -u -r1.117 -r1.118 src/usr.sbin/postinstall/postinstall Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/distrib/sets/lists/etc/mi diff -u src/distrib/sets/lists/etc/mi:1.223 src/distrib/sets/lists/etc/mi:1.224 --- src/distrib/sets/lists/etc/mi:1.223 Mon Apr 11 22:09:56 2011 +++ src/distrib/sets/lists/etc/mi Fri May 27 09:28:41 2011 @@ -1,4 +1,4 @@ -# $NetBSD: mi,v 1.223 2011/04/11 22:09:56 martin Exp $ +# $NetBSD: mi,v 1.224 2011/05/27 09:28:41 plunky Exp $ # # Note: end-user configuration files that are moved to another location # should not be marked "obsolete"; they should just be removed from @@ -170,13 +170,14 @@ ./etc/rc.d/altqd etc-router-rc ./etc/rc.d/amd etc-amd-rc ./etc/rc.d/apmd etc-sys-rc +./etc/rc.d/bluetooth etc-sys-rc ./etc/rc.d/bootconf.sh etc-sys-rc ./etc/rc.d/bootparams etc-bootserver-rc -./etc/rc.d/btattach etc-sys-rc -./etc/rc.d/btconfig etc-sys-rc +./etc/rc.d/btattach etc-obsolete obsolete +./etc/rc.d/btconfig etc-obsolete obsolete ./etc/rc.d/btcontrol etc-obsolete obsolete -./etc/rc.d/btdevctl etc-sys-rc -./etc/rc.d/bthcid etc-sys-rc +./etc/rc.d/btdevctl etc-obsolete obsolete +./etc/rc.d/bthcid etc-obsolete obsolete ./etc/rc.d/btuartd etc-obsolete obsolete ./etc/rc.d/ccd etc-sys-rc ./etc/rc.d/cgd etc-sys-rc @@ -265,7 +266,7 @@ ./etc/rc.d/rwho etc-net-rc ./etc/rc.d/savecore etc-sys-rc ./etc/rc.d/screenblank etc-sys-rc -./etc/rc.d/sdpd etc-sys-rc +./etc/rc.d/sdpd etc-obsolete obsolete ./etc/rc.d/securelevel etc-sys-rc ./etc/rc.d/sshd etc-secsh-rc ./etc/rc.d/staticroute etc-sys-rc Index: src/etc/defaults/rc.conf diff -u src/etc/defaults/rc.conf:1.112 src/etc/defaults/rc.conf:1.113 --- src/etc/defaults/rc.conf:1.112 Fri Feb 18 00:42:20 2011 +++ src/etc/defaults/rc.conf Fri May 27 09:28:42 2011 @@ -1,4 +1,4 @@ -# $NetBSD: rc.conf,v 1.112 2011/02/18 00:42:20 jmcneill Exp $ +# $NetBSD: rc.conf,v 1.113 2011/05/27 09:28:42 plunky Exp $ # # /etc/defaults/rc.conf -- # default configuration of /etc/rc.conf @@ -306,12 +306,12 @@ # ISDN daemon isdnd=NO isdnd_flags="" -# Bluetooth daemons -btattach=NO # Bluetooth attach serial HCI -btconfig=NO # Bluetooth controller configuration -btdevctl=NO # Bluetooth device configuration -bthcid=NO bthcid_flags="" # Bluetooth HCI daemon -sdpd=NO sdpd_flags="" # Service Discovery daemon +# Bluetooth configuration +bluetooth=NO +# and the following are used when bluetooth=YES +btconfig_devices="" # all +bthcid=YES bthcid_flags="" +sdpd=YES sdpd_flags="" # Other daemons. # Index: src/etc/mtree/special diff -u src/etc/mtree/special:1.137 src/etc/mtree/special:1.138 --- src/etc/mtree/special:1.137 Sun Apr 17 13:07:18 2011 +++ src/etc/mtree/special Fri May 27 09:28:42 2011 @@ -1,4 +1,4 @@ -# $NetBSD: special,v 1.137 2011/04/17 13:07:18 martin Exp $ +# $NetBSD: special,v 1.138 2011/05/27 09:28:42 plunky Exp $ # @(#)special 8.2 (Berkeley) 1/23/94 # # This file may be overwritten on upgrades. @@ -186,12 +186,9 @@ ./etc/rc.d/altqd type=file mode=0555 ./etc/rc.d/amd type=file mode=0555 ./etc/rc.d/apmd type=file mode=0555 +./etc/rc.d/bluetooth type=file mode=0555 ./etc/rc.d/bootconf.sh type=file mode=0555 ./etc/rc.d/bootparams type=file mode=0555 -./etc/rc.d/btattach type=file mode=0555 -./etc/rc.d/btconfig type=file mode=0555 -./etc/rc.d/btdevctl type=file mode=0555 -./etc/rc.d/bthcid type=file mode=0555 ./etc/rc.d/ccd type=file mode=0555 ./etc/rc.d/cgd type=file mode=0555 ./etc/rc.d/cleartmp type=file mode=0555 @@ -268,7 +265,6 @@ ./etc/rc.d/rwho type=file mode=0555 ./etc/rc.d/savecore type=file mode=0555 ./etc/rc.d/screenblank type=file mode=0555 -./etc/rc.d/sdpd type=file mode=0555 ./etc/rc.d/securelevel type=file mode=0555 ./etc/rc.d/sshd type=file mode=0555 ./etc/rc.d/staticroute type=file mode=0555 Index: src/etc/powerd/scripts/sleep_button diff -u src/etc/powerd/scripts/sleep_button:1.7 src/etc/powerd/scripts/sleep_button:1.8 --- src/etc/powerd/scripts/sleep_button:1.7 Fri Dec 31 09:36:15 2010 +++ src/etc/powerd/scripts/sleep_button Fri May 27 09:28:42 2011 @@ -1,6 +1,6 @@ #!/bin/sh - # -# $NetBSD: sleep_button,v 1.7 2010/12/31 09:36:15 jruoho Exp $ +# $NetBSD: sleep_button,v 1.8 2011/05/27 09:28:42 plunky Exp $ # # Generic script for sleep button events. # @@ -11,8 +11,7 @@ case "${2}" in pressed) - /etc/rc.d/btdevctl stop - /etc/rc.d/btconfig stop + /etc/rc.d/bluetooth stop /etc/rc.d/ntpd stop /etc/rc.d/dhclient stop /etc/rc.d/network stop @@ -36,8 +35,7 @@ /etc/rc.d/dhclient start /etc/rc.d/ntpdate start /etc/rc.d/ntpd start - /etc/rc.d/btconfig start - /etc/rc.d/btdevctl start + /etc/rc.d/bluetooth start ;; released) Index: src/etc/rc.d/Makefile diff -u src/etc/rc.d/Makefile:1.83 src/etc/rc.d/Makefile:1.84 --- src/etc/rc.d/Makefile:1.83 Fri Feb 18 00:42:20 2011 +++ src/etc/rc.d/Makefile Fri May 27 09:28:42 2011 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.83 2011/02/18 00:42:20 jmcneill Exp $ +# $NetBSD: Makefile,v 1.84 2011/05/27 09:28:42 plunky Exp $ .include <bsd.own.mk> @@ -16,7 +16,7 @@ CONFIGFILES=\ DAEMON DISKS LOGIN NETWORKING SERVERS \ accounting altqd amd apmd \ - bootconf.sh bootparams btattach btconfig btdevctl bthcid \ + bluetooth bootconf.sh bootparams \ ccd cgd cleartmp cron \ dhclient dhcpcd dhcpd dhcrelay dmesg downinterfaces envsys \ fsck fsck_root ftp_proxy ftpd \ @@ -33,7 +33,7 @@ quota \ racoon rpcbind raidframe raidframeparity rarpd rbootd rndctl \ root route6d routed rtadvd rtclocaltime rtsold rwho \ - savecore screenblank sdpd securelevel sshd \ + savecore screenblank securelevel sshd \ staticroute swap1 swap2 sysctl sysdb syslogd \ timed tpctl ttys \ veriexec virecover wdogctl wpa_supplicant wscons wsmoused \ Index: src/etc/rc.d/btattach diff -u src/etc/rc.d/btattach:1.1 src/etc/rc.d/btattach:1.2 --- src/etc/rc.d/btattach:1.1 Tue Apr 15 11:17:47 2008 +++ src/etc/rc.d/btattach Fri May 27 09:28:42 2011 @@ -1,44 +0,0 @@ -#!/bin/sh -# -# $NetBSD: btattach,v 1.1 2008/04/15 11:17:47 plunky Exp $ -# - -# PROVIDE: btattach -# REQUIRE: DAEMON -# BEFORE: bluetooth - -$_rc_subr_loaded . /etc/rc.subr - -name="btattach" -rcvar=${name} -required_files="/etc/bluetooth/btattach.conf" -start_cmd="btattach_start" -stop_cmd="btattach_stop" - -btattach_start() -{ - - while read type tty speed flags; do - case ${type} in - \#*|"") - continue - ;; - esac - - /usr/sbin/btattach ${flags} ${type} ${tty} ${speed} - done < /etc/bluetooth/btattach.conf -} - -btattach_stop() -{ - - pids="$(check_process btattach)" - if [ -n "${pids}" ]; then - for pid in ${pids}; do - kill $sig_stop $pid - done - fi -} - -load_rc_config ${name} -run_rc_command "$1" Index: src/etc/rc.d/btconfig diff -u src/etc/rc.d/btconfig:1.1 src/etc/rc.d/btconfig:1.2 --- src/etc/rc.d/btconfig:1.1 Mon Jun 19 15:44:36 2006 +++ src/etc/rc.d/btconfig Fri May 27 09:28:42 2011 @@ -1,67 +0,0 @@ -#!/bin/sh -# -# $NetBSD: btconfig,v 1.1 2006/06/19 15:44:36 gdamore Exp $ -# - -# PROVIDE: bluetooth -# REQUIRE: DAEMON -# BEFORE: LOGIN - -$_rc_subr_loaded . /etc/rc.subr - -name="btconfig" -rcvar=${name} -command="/usr/sbin/${name}" -start_cmd="btconfig_start" -stop_cmd="btconfig_stop" -status_cmd="btconfig_status" - -btconfig_start() -{ - echo -n 'Configuring Bluetooth controllers:' - - # - # Configure Bluetooth controllers. - # - # If ${btconfig_devices} is set, it should be a list of devices to - # configure. Otherwise, all available devices will be configured. - # - # If ${btconfig_<dev>} is set, it will be used as the parameter - # list for btconfig. Otherwise ${btconfig_args} will be used or - # if that is not set, the default string "enable" will be used. - # - - devs="${btconfig_devices:-$(${command} -l)}" - for dev in ${devs}; do - eval args="\$btconfig_${dev}" - if [ -z "${args}" ]; then - args="${btconfig_args:-enable}" - fi - - echo -n " ${dev}" - ${command} ${dev} ${args} - done - - echo '.' -} - -btconfig_stop() -{ - echo -n 'Disabling Bluetooth controllers:' - - devs="${btconfig_devices:-$(${command} -l)}" - for dev in ${devs}; do - echo -n " ${dev}" - ${command} ${dev} disable - done - - echo '.' -} - -btconfig_status() -{ - ${command} -} - -load_rc_config ${name} -run_rc_command "$1" Index: src/etc/rc.d/btdevctl diff -u src/etc/rc.d/btdevctl:1.4 src/etc/rc.d/btdevctl:1.5 --- src/etc/rc.d/btdevctl:1.4 Mon Jul 23 18:06:56 2007 +++ src/etc/rc.d/btdevctl Fri May 27 09:28:42 2011 @@ -1,39 +0,0 @@ -#!/bin/sh -# -# $NetBSD: btdevctl,v 1.4 2007/07/23 18:06:56 plunky Exp $ -# - -# PROVIDE: btdevctl -# REQUIRE: bluetooth bthcid -# BEFORE: LOGIN - -$_rc_subr_loaded . /etc/rc.subr - -name="btdevctl" -rcvar=${name} -required_files="/etc/bluetooth/btdevctl.conf" -start_cmd='do_btdevctl "-A" "Attaching"' -stop_cmd='do_btdevctl "-D" "Detaching"' - -do_btdevctl() -{ - echo "${2} Bluetooth devices:" - - while read -r service address device junk; do - case ${service} in - \#*|"") - continue - ;; - esac - - if [ -z ${device} -o ${junk} ]; then - echo "${name}: invalid entry" - return 1 - fi - - /usr/sbin/btdevctl ${1} "-a" ${address} "-d" ${device} "-s" ${service} - done < /etc/bluetooth/btdevctl.conf -} - -load_rc_config ${name} -run_rc_command "$1" Index: src/etc/rc.d/bthcid diff -u src/etc/rc.d/bthcid:1.2 src/etc/rc.d/bthcid:1.3 --- src/etc/rc.d/bthcid:1.2 Tue Jun 1 21:08:13 2010 +++ src/etc/rc.d/bthcid Fri May 27 09:28:42 2011 @@ -1,19 +0,0 @@ -#!/bin/sh -# -# $NetBSD: bthcid,v 1.2 2010/06/01 21:08:13 wiz Exp $ -# - -# PROVIDE: bthcid -# REQUIRE: bluetooth -# BEFORE: LOGIN - -$_rc_subr_loaded . /etc/rc.subr - -name="bthcid" -rcvar=$name - -command="/usr/sbin/${name}" -pidfile="/var/run/${name}.pid" - -load_rc_config $name -run_rc_command "$1" Index: src/etc/rc.d/sdpd diff -u src/etc/rc.d/sdpd:1.3 src/etc/rc.d/sdpd:1.4 --- src/etc/rc.d/sdpd:1.3 Tue Jun 1 21:08:13 2010 +++ src/etc/rc.d/sdpd Fri May 27 09:28:42 2011 @@ -1,17 +0,0 @@ -#!/bin/sh -# -# $NetBSD: sdpd,v 1.3 2010/06/01 21:08:13 wiz Exp $ -# - -# PROVIDE: sdpd -# REQUIRE: bluetooth -# BEFORE: LOGIN - -$_rc_subr_loaded . /etc/rc.subr - -name="sdpd" -rcvar=$name -command="/usr/sbin/${name}" - -load_rc_config $name -run_rc_command "$1" Index: src/share/man/man5/rc.conf.5 diff -u src/share/man/man5/rc.conf.5:1.146 src/share/man/man5/rc.conf.5:1.147 --- src/share/man/man5/rc.conf.5:1.146 Fri Mar 18 16:21:46 2011 +++ src/share/man/man5/rc.conf.5 Fri May 27 09:28:42 2011 @@ -1,4 +1,4 @@ -.\" $NetBSD: rc.conf.5,v 1.146 2011/03/18 16:21:46 jruoho Exp $ +.\" $NetBSD: rc.conf.5,v 1.147 2011/05/27 09:28:42 plunky Exp $ .\" .\" Copyright (c) 1996 Matthew R. Green .\" All rights reserved. @@ -1322,50 +1322,50 @@ Passes .Sy statd_flags . .El -.Ss Bluetooth configuration and daemons +.Ss Bluetooth support .Bl -tag -width net_interfaces -.It Sy btattach +.It Sy bluetooth Boolean value. -Attach serial bluetooth interfaces as listed in the configuration file -.Pa /etc/bluetooth/btdevctl.conf . -.It Sy btconfig -Boolean value. -Configure bluetooth devices. -If the -.Sy btconfig_devices -variable below is not specified, all devices known to the system -will be configured. -For each device, configuration arguments are first looked for -in the -.Sy btconfig_{dev} -variable, otherwise the value of the -.Sy btconfig_args -variable will be used, and if that is not specified the default string is -.Sq enable . +Configure Bluetooth support, comprising the following tasks: +.Bl -dash -compact +.It +attach serial Bluetooth controllers as listed in the +.Pa /etc/bluetooth/btdevctl.conf +configuration file. +.It +enable Bluetooth controllers with useful defaults, plus +additional options as detailed below. +.It +optionally, start +.Xr bthcid 8 , +the Bluetooth Link Key/PIN Code manager, passing +.Sy bthcid_flags . +.It +configure local Bluetooth drivers as listed in the +.Pa /etc/bluetooth/btdevctl.conf +configuration file. +.It +optionally, start +.Xr sdpd 8 , +the Service Discovery server, passing +.Sy sdpd_flags . +.El .It Sy btconfig_devices -An optional space separated list of bluetooth devices to be configured at -boot time. +A string. +An optional list of Bluetooth controllers to configure. +.It Sy btconfig_{dev} +A string. +Additional configuration options for specific Bluetooth controllers. .It Sy btconfig_args -An optional string, containing default arguments for bluetooth devices to -be configured. -.It Sy btdevctl -Boolean value. -Configure Bluetooth devices as listed in the configuration file -.Pa /etc/bluetooth/btdevctl.conf . +A string. +Additional configuration options for Bluetooth controllers without +specific options as above. .It Sy bthcid Boolean value. -Runs -.Xr bthcid 8 , -the Bluetooth HCI daemon, which manages link keys and PIN codes for -Bluetooth links. -Passes -.Sy bthcid_flags . +If set to false, disable starting the Bluetooth Link Key/PIN Code manager. .It Sy sdpd Boolean value. -Runs the Service Discovery Profile daemon, -.Xr sdpd 8 . -Passes -.Sy sdpd_flags . +If set to false, disable starting the Bluetooth Service Discovery server. .El .Ss Other daemons .Bl -tag -width net_interfaces Index: src/usr.sbin/postinstall/postinstall diff -u src/usr.sbin/postinstall/postinstall:1.117 src/usr.sbin/postinstall/postinstall:1.118 --- src/usr.sbin/postinstall/postinstall:1.117 Sun Apr 17 13:16:59 2011 +++ src/usr.sbin/postinstall/postinstall Fri May 27 09:28:42 2011 @@ -1,6 +1,6 @@ #!/bin/sh # -# $NetBSD: postinstall,v 1.117 2011/04/17 13:16:59 martin Exp $ +# $NetBSD: postinstall,v 1.118 2011/05/27 09:28:42 plunky Exp $ # # Copyright (c) 2002-2008 The NetBSD Foundation, Inc. # All rights reserved. @@ -651,9 +651,10 @@ # # -# bluetooth +# Bluetooth # -additem bluetooth "bluetooth configuration is up to date" + +additem bluetooth "Bluetooth configuration is up to date" do_bluetooth() { [ -n "$1" ] || err 3 "USAGE: do_bluetooth fix|check" @@ -669,6 +670,18 @@ "${DEST_DIR}/var/db/btdevctl.plist" failed=$(( ${failed} + $? )) + notfixed="" + if [ "${op}" = "fix" ]; then + notfixed="${NOT_FIXED}" + fi + for _v in btattach btconfig btdevctl; do + if rcconf_is_set "${op}" "${_v}" "${_v}"; then + msg \ + "${_v} is obsolete in rc.conf(5)${notfixed}: use bluetooth=YES" + failed=$(( ${failed} + 1 )) + fi + done + return ${failed} } @@ -1070,7 +1083,7 @@ compare_dir "${op}" "${SRC_DIR}/etc/rc.d" "${DEST_DIR}/etc/rc.d" 555 \ DAEMON DISKS LOGIN NETWORKING SERVERS \ accounting altqd amd apmd \ - bootconf.sh bootparams btattach btconfig btdevctl bthcid \ + bluetooth bootconf.sh bootparams \ ccd cgd cleartmp cron \ dhclient dhcpcd dhcpd dhcrelay dmesg downinterfaces envsys \ fsck fsck_root ftp_proxy ftpd \ @@ -1088,7 +1101,7 @@ quota \ racoon rpcbind raidframe raidframeparity rarpd rbootd rndctl \ root route6d routed rtadvd rtclocaltime rtsold rwho \ - savecore screenblank sdpd securelevel sshd \ + savecore screenblank securelevel sshd \ staticroute swap1 swap2 sysctl sysdb syslogd \ timed tpctl ttys \ veriexec virecover wdogctl wpa_supplicant wscons wsmoused \ @@ -1111,7 +1124,8 @@ fi # check for obsolete rc.d files - for f in NETWORK btcontrol btuartd fsck.sh kerberos nfsiod servers \ + for f in NETWORK btattach btconfig btcontrol btdevctl bthcid btuartd \ + fsck.sh kerberos nfsiod sdpd servers \ systemfs daemon gated login poffd portmap sunndd xntpd; do fd="/etc/rc.d/${f}" [ -e "${DEST_DIR}${fd}" ] && echo "${fd}" Added files: Index: src/etc/rc.d/bluetooth diff -u /dev/null src/etc/rc.d/bluetooth:1.1 --- /dev/null Fri May 27 09:28:43 2011 +++ src/etc/rc.d/bluetooth Fri May 27 09:28:42 2011 @@ -0,0 +1,134 @@ +#!/bin/sh +# +# $NetBSD: bluetooth,v 1.1 2011/05/27 09:28:42 plunky Exp $ +# + +# PROVIDE: bluetooth +# REQUIRE: DAEMON +# BEFORE: LOGIN + +$_rc_subr_loaded . /etc/rc.subr + +name="bluetooth" +rcvar=${name} +start_cmd="bluetooth_start" +stop_cmd="bluetooth_stop" + +btattach_cmd="/usr/sbin/btattach" +btconfig_cmd="/usr/sbin/btconfig" +bthcid_cmd="/usr/sbin/bthcid" +btdevctl_cmd="/usr/sbin/btdevctl" +sdpd_cmd="/usr/sbin/sdpd" + +btattach_conf="/etc/bluetooth/btattach.conf" +btdevctl_conf="/etc/bluetooth/btdevctl.conf" + +required_files="${btattach_conf} ${btdevctl_conf}" + +bluetooth_start() +{ + # + # attach Bluetooth serial controllers + # + while read type tty speed flags; do + case ${type} in + \#*|"") + continue + ;; + esac + + echo "attaching Bluetooth controller to $(basename ${tty})" + ${btattach_cmd} ${flags} ${type} ${tty} ${speed} + done < ${btattach_conf} + + # + # enable Bluetooth controllers. + # + # If ${btconfig_devices} is set, it is treated as a list of devices + # to configure. Otherwise, all available devices will be configured + # + # For each device we are configuring, enable it with maximum security + # settings (not discoverable, not connectable, auth and encryption + # required for all connections), relaxed link policy settings and + # the link master role, set a class of device for Computer, then apply + # any options from the 'btconfig_<dev>' or 'btconfig_args' variables + # on top of settings relaxing the security requirements, so that these + # can be overridden (btconfig parses all command line options before + # acting) + # + echo -n "configuring Bluetooth controllers:" + for dev in ${btconfig_devices:-$(${btconfig_cmd} -l)}; do + echo -n " ${dev}" + eval args=\${btconfig_${dev}:-\${btconfig_args}} + ${btconfig_cmd} ${dev} enable -iscan -pscan auth encrypt + ${btconfig_cmd} ${dev} switch hold sniff park master + ${btconfig_cmd} ${dev} class 0x000100 + ${btconfig_cmd} ${dev} iscan pscan -auth -encrypt ${args} + done + echo "." + + # + # start Bluetooth Link Key/PIN Code manager + # + if checkyesno bthcid; then + echo "starting Bluetooth Link Key/PIN Code manager" + ${bthcid_cmd} ${bthcid_flags} + fi + + # + # attach local Bluetooth service drivers + # + while read -r service addr dev junk; do + case ${service} in + \#*|"") + continue + ;; + esac + + if [ -z ${dev} -o ${junk} ]; then + echo "${name}: invalid entry" + return 1 + fi + + echo "attaching Bluetooth ${service} service from \"${addr}\"" + ${btdevctl_cmd} -A -a ${addr} -d ${dev} -s ${service} + done < ${btdevctl_conf} + + # + # start Bluetooth Service Discovery server + # + if checkyesno sdpd; then + echo "starting Bluetooth Service Discovery server" + ${sdpd_cmd} ${sdpd_flags} + fi +} + +bluetooth_stop() +{ + # + # disable Bluetooth controllers, detaching local service drivers + # + echo -n "disabling Bluetooth controllers:" + for dev in ${btconfig_devices:-$(${btconfig_cmd} -l)}; do + echo -n " ${dev}" + ${btconfig_cmd} ${dev} disable + done + echo "." + + # + # halt Service Discovery server, Link Key/PIN Code manager, + # and detach Bluetooth serial controllers + # + p1=$(check_pidfile /var/run/bthcid.pid ${bthcid_cmd}) + p2=$(check_process ${sdpd_cmd}) + p3=$(check_process ${btattach_cmd}) + if [ -n "${p1}${p2}${p3}" ]; then + for pid in ${p1} ${p2} ${p3}; do + kill ${sig_stop} ${pid} + done + wait_for_pids ${p1} ${p2} ${p3} + fi +} + +load_rc_config ${name} +run_rc_command "$1"