Up to [cvs.NetBSD.org] / src / usr.sbin / btdevctl
Request diff between arbitrary revisions
Keyword substitution: kv
Default branch: MAIN
fix various typos in comments.
Update for proplib(3) API changes.
Fix fallout from hid factorisation: - need to install sys/dev/hid/hid.h for userland - include it where needed - most of the time in place if usb/usbhid.h
provide more informative error messages
Pull up following revision(s) (requested by plunky in ticket #1407): sys/dev/bluetooth/btdev.h: revision 1.9 sys/arch/iyonix/conf/GENERIC: revision 1.60 sys/arch/sparc64/conf/GENERIC: revision 1.129 sys/dev/usb/hid.c: revision 1.30 sys/dev/usb/hid.h: revision 1.13 sys/arch/i386/conf/GENERIC: revision 1.983 usr.sbin/btdevctl/print.c: revision 1.10 sys/arch/evbarm/conf/MPCSA_GENERIC: revision 1.16 sys/arch/alpha/conf/GENERIC: revision 1.337 sys/dev/bluetooth/files.bluetooth: revision 1.14 sys/arch/evbarm/conf/GUMSTIX: revision 1.49 sys/dev/usb/usbdevs: revision 1.550 sys/arch/evbppc/conf/OPENBLOCKS266_OPT: revision 1.14 sys/arch/hpcsh/conf/GENERIC: revision 1.91 sys/dev/bluetooth/btmagic.c: revision 1.1 distrib/sets/lists/man/mi: revision 1.1210 sys/arch/amd64/conf/GENERIC: revision 1.279 sys/arch/i386/conf/ALL: revision 1.258 sys/arch/amd64/conf/XEN3_DOM0: revision 1.54 sys/arch/hpcarm/conf/JORNADA720: revision 1.78 sys/dev/usb/hid.c: revision 1.29 share/man/man4/btmagic.4: revision 1.1 hid_get_data() does not work if the size of data is less than a byte and crosses a byte boundary, and it always returns a sign-extended value. fix this by using the algorithm from libusbhid to read bytes, and provide a hid_get_udata() function to return unsigned data values. while here, const args update DPRINTF to reflect actual function name add Apple Magic Mouse product-id regen for Magic Mouse id allow for vendor-id and product-id properties, passing them through to child devices add Magic Mouse driver and manpage btmagic(4) additionally query the "PnP Information" service record to discover any USB Forum vendor-id and product-id values and store them in the property list if found. add btmagic(4) where other Bluetooth drivers are listed
additionally query the "PnP Information" service record to discover any USB Forum vendor-id and product-id values and store them in the property list if found.
Sync with HEAD. Third (and last) commit. See http://mail-index.netbsd.org/source-changes/2009/05/13/msg221222.html
update to use new sdp(3) and sdp_data(3) APIs
Fix -Wsign-compare issues
sync with head.
use __arraycount macro instead of rolling our own
Catch up on netbsd-4 as of a few days ago.
Pull up following revision(s) (requested by joerg in ticket #904): sbin/veriexecctl/veriexecctl.c: revision 1.29 (via patch) common/lib/libprop/prop_string.c: revision 1.9 (via patch) distrib/sets/lists/comp/mi: revision 1.1063 (via patch) common/lib/libprop/prop_kern.c: revision 1.8 (via patch) common/include/prop/prop_string.h: revision 1.2 (via patch) common/include/prop/prop_ingest.h: revision 1.2 (via patch) usr.sbin/btdevctl/btdevctl.c: revision 1.5 (via patch) common/lib/libprop/prop_object_impl.h: revision 1.14 (via patch) common/lib/libprop/prop_rb.c: revision 1.7 (via patch) common/include/prop/prop_array.h: revision 1.5 (via patch) common/lib/libprop/prop_stack.h: revision 1.1 (via patch) common/lib/libprop/prop_object_impl.h: revision 1.16 (via patch) common/lib/libprop/prop_number.3: revision 1.7 (via patch) common/lib/libprop/prop_stack.h: revision 1.2 (via patch) common/lib/libprop/prop_stack.c: revision 1.1 (via patch) common/lib/libprop/prop_object_impl.h: revision 1.17 (via patch) common/lib/libprop/prop_dictionary_util.c: revision 1.2 (via patch) common/lib/libprop/prop_dictionary_util.3: revision 1.2 (via patch) common/lib/libprop/prop_dictionary.c: revision 1.18 (via patch) common/lib/libprop/prop_stack.c: revision 1.2 (via patch) common/lib/libprop/prop_object_impl.h: revision 1.18 (via patch) common/lib/libprop/prop_dictionary.c: revision 1.19 (via patch) common/include/prop/prop_bool.h: revision 1.3 (via patch) common/include/prop/prop_dictionary.h: revision 1.7 (via patch) common/include/prop/prop_data.h: revision 1.2 (via patch) sys/sys/dkio.h: revision 1.14 (via patch) usr.sbin/btdevctl/sdp.c: revision 1.4 (via patch) common/include/prop/Makefile: revision 1.3 (via patch) common/include/prop/prop_number.h: revision 1.5 (via patch) common/lib/libprop/prop_object.c: revision 1.14 (via patch) common/lib/libprop/prop_object.c: revision 1.15 (via patch) common/lib/libprop/prop_object.c: revision 1.16 (via patch) common/lib/libprop/prop_bool.3: revision 1.3 (via patch) common/lib/libprop/prop_data.3: revision 1.4 (via patch) common/lib/libprop/prop_object.3: revision 1.6 (via patch) common/lib/libprop/prop_data.c: revision 1.7 (via patch) common/lib/libprop/prop_data.c: revision 1.8 (via patch) common/lib/libprop/prop_data.c: revision 1.9 (via patch) common/lib/libprop/prop_dictionary.c: revision 1.20 (via patch) usr.sbin/btdevctl/print.c: revision 1.9 (via patch) sbin/veriexecctl/veriexecctl_parse.y: revision 1.22 (via patch) common/lib/libprop/prop_number.c: revision 1.12 (via patch) common/include/prop/proplib.h: revision 1.5 (via patch) common/lib/libprop/prop_number.c: revision 1.13 (via patch) common/lib/libprop/prop_number.c: revision 1.14 (via patch) common/include/prop/prop_object.h: revision 1.5 (via patch) common/lib/libprop/prop_array.3: revision 1.5 (via patch) common/include/prop/prop_object.h: revision 1.6 (via patch) common/lib/libprop/prop_string.3: revision 1.4 (via patch) common/lib/libprop/prop_bool.c: revision 1.10 (via patch) common/lib/libprop/Makefile.inc: revision 1.6 (via patch) common/lib/libprop/prop_ingest.c: revision 1.2 (via patch) common/lib/libprop/prop_bool.c: revision 1.11 (via patch) common/lib/libprop/prop_array.c: revision 1.10 (via patch) common/lib/libprop/prop_ingest.3: revision 1.3 (via patch) common/lib/libprop/prop_bool.c: revision 1.12 (via patch) common/lib/libprop/prop_array.c: revision 1.11 (via patch) common/lib/libprop/prop_string.c: revision 1.7 (via patch) common/lib/libprop/prop_dictionary.3: revision 1.8 (via patch) common/lib/libprop/prop_array.c: revision 1.9 (via patch) usr.sbin/btdevctl/db.c: revision 1.4 (via patch) common/lib/libprop/prop_string.c: revision 1.8 (via patch) common/include/prop/plistref.h: revision 1.1 (via patch) Consider '\r' to be white space. Discussed with and also kept as local change by freza. With this change, DOS style line endings work. boolean_t -> bool TRUE -> true FALSE -> false libprop is currently using a recursive parser. While this is fine for userland, deeply nested arrays and dictionaries can easily overflow the kernel stack and thereby force a panic. Fix the internalizer and prop_object_release to use a separate call stack and alter the dictionary and array handling to not recurse on the C stack. The default stack has an inline depth of 16 elements, which should keep the overhead reasonable. This issue was found by Pavel Cahyna and Jachym Holecek. Additionally add a limit for prop_object_copyin_ioctl to prevent user programs from temporary allocating unbound amount of kernel memory. Allow malloc to fail so that tight loops of userland processes can't force panics by exhausting the kernel map. Tested with the sample exploit of Jachym, his test suite and reviewed by himself (initial patch), Christos Zoulas and Jason Thorpe. struct plistref does not reference other proplib data types, so split it in its own header file to be included by dkio.h. Fixes breakage due to pollution from proplib.h in programs which include ioctl.h. Tested and OK by dogcow@. Attempt at fixing build failures after proplib was converted to bool: FALSE -> false, TRUE -> true, boolean_t -> bool, int -> bool when appropriate, include stdbool.h . proplib.h no longer provides boolean_t, so it is necessary to change to bool. From Tom Spindler (dogcow@). Avoid using unbound amount of stack frames in prop_object_equal by using a dynamic stack as well. Reorder arguments for the internalizer as the iteration is always present and should go before possibly NULL arguments. Reviewed by mjf@ and adrianp@
Sync w/ NetBSD-4-RC_1
Attempt at fixing build failures after proplib was converted to bool: FALSE -> false, TRUE -> true, boolean_t -> bool, int -> bool when appropriate, include stdbool.h . proplib.h no longer provides boolean_t, so it is necessary to change to bool. From Tom Spindler (dogcow@).
Pull up following revision(s) (requested by plunky in ticket #744): sys/netbt/l2cap_lower.c: revision 1.6 sys/dev/bluetooth/btdev.h: revision 1.6 sys/netbt/sco_socket.c: revision 1.9 sys/netbt/rfcomm_upper.c: revision 1.3 sys/netbt/l2cap_socket.c: revision 1.7 sys/netbt/rfcomm_upper.c: revision 1.5 lib/libusbhid/usbhid.h: revision 1.5 sys/netbt/rfcomm_upper.c: revision 1.6 usr.sbin/btdevctl/btdevctl.c: revision 1.4 usr.sbin/btdevctl/btdevctl.h: revision 1.3 usr.sbin/btdevctl/btdevctl.8: revision 1.4 sys/netbt/rfcomm_session.c: revision 1.5 sys/netbt/hci.h: revision 1.10 usr.bin/rfcomm_sppd/rfcomm_sppd.c: revision 1.6 sys/netbt/hci_link.c: revision 1.11 usr.bin/rfcomm_sppd/rfcomm_sppd.c: revision 1.7 usr.bin/rfcomm_sppd/rfcomm_sppd.c: revision 1.8 sys/dev/bluetooth/btsco.c: revision 1.14 sys/netbt/rfcomm_session.c: revision 1.9 usr.sbin/btdevctl/sdp.c: revision 1.2 share/man/man9/bluetooth.9: revision 1.2 usr.sbin/btdevctl/sdp.c: revision 1.3 sys/dev/bluetooth/bthidev.c: revision 1.8 sys/netbt/l2cap.h: revision 1.4 sys/netbt/rfcomm.h: revision 1.3 sys/netbt/l2cap.h: revision 1.5 sys/netbt/l2cap_misc.c: revision 1.3 share/man/man4/bluetooth.4: revision 1.5 lib/libusbhid/usbhid.3: revision 1.11 sys/netbt/bluetooth.h: revision 1.5 share/man/man4/bthidev.4: revision 1.8 sys/netbt/rfcomm_dlc.c: revision 1.3 usr.sbin/btdevctl/print.c: revision 1.8 sys/netbt/rfcomm_socket.c: revision 1.7 sys/netbt/l2cap_signal.c: revision 1.4 sys/netbt/l2cap_signal.c: revision 1.5 sys/netbt/l2cap_signal.c: revision 1.7 sys/netbt/hci_event.c: revision 1.6 usr.bin/rfcomm_sppd/rfcomm_sppd.1: revision 1.5 sys/netbt/l2cap_upper.c: revision 1.3 sys/netbt/l2cap_lower.c: revision 1.2 usr.sbin/btdevctl/db.c: revision 1.3 sys/netbt/l2cap_upper.c: revision 1.6 lib/libusbhid/descr.c: revision 1.5 sys/netbt/l2cap_upper.c: revision 1.7 sys/netbt/l2cap_lower.c: revision 1.4 Add 'service level' security for L2CAP and RFCOMM connections, following the Linux (BlueZ) API. - L2CAP or RFCOMM connections can require the baseband radio link mode be any of: authenticated (devices are paired) encrypted (implies authentication) secured (encryption, plus generate new link key) - for sockets, the mode is set using setsockopt(2) and the socket connection will be aborted if the mode change fails. - mode settings will be applied during connection establishment, and for safety, we enter a wait state and will only proceed when the mode settings are successfuly set. - It is possible to change the mode on already open connections, but not possible to guarantee that data already queued (from either end) will not be delivered. (this is a feature, not a bug) - bthidev(4) and rfcomm_sppd(1) support "auth", "encrypt" and "secure" options - btdevctl(8) by default enables "auth" for HIDs, and "encrypt" for keyboards (which are required to support it) - ALSO INCLUDES OTHER MINOR FIXES
Add 'service level' security for L2CAP and RFCOMM connections, following the Linux (BlueZ) API. - L2CAP or RFCOMM connections can require the baseband radio link mode be any of: authenticated (devices are paired) encrypted (implies authentication) secured (encryption, plus generate new link key) - for sockets, the mode is set using setsockopt(2) and the socket connection will be aborted if the mode change fails. - mode settings will be applied during connection establishment, and for safety, we enter a wait state and will only proceed when the mode settings are successfuly set. - It is possible to change the mode on already open connections, but not possible to guarantee that data already queued (from either end) will not be delivered. (this is a feature, not a bug) - bthidev(4) and rfcomm_sppd(1) support "auth", "encrypt" and "secure" options - btdevctl(8) by default enables "auth" for HIDs, and "encrypt" for keyboards (which are required to support it)
release prop objects after they have been retained by dictionary
Pull up following revision(s) (requested by plunky in ticket #161): sys/dev/bluetooth/btdev.h: revision 1.4 distrib/sets/lists/comp/mi: revision 1.922 usr.sbin/postinstall/postinstall: revision 1.25 sys/netbt/hci_unit.c: revision 1.3 sys/netbt/hci_ioctl.c: revision 1.4 usr.sbin/sdpd/profile.c: revision 1.2 usr.sbin/btdevctl/btdevctl.c: revision 1.2 share/man/man4/Makefile: revision 1.405 distrib/sets/lists/man/mi: revision 1.930 distrib/sets/lists/etc/mi: revision 1.176 usr.sbin/sdpd/profile.c: revision 1.3 usr.sbin/btdevctl/btdevctl.c: revision 1.3 etc/MAKEDEV.tmpl: revision 1.62 distrib/sets/lists/base/mi: revision 1.650 usr.sbin/btdevctl/btdevctl.h: revision 1.2 usr.bin/sdpquery/sdpquery.1: revision 1.4 sys/netbt/rfcomm_session.c: revision 1.2 usr.sbin/btdevctl/btdevctl.8: revision 1.3 usr.bin/sdpquery/search.c: revision 1.2 usr.sbin/sdpd/Makefile: revision 1.2 sys/dev/bluetooth/Makefile: revision 1.3 usr.sbin/btdevctl/cfg.c: file removal sys/netbt/files.netbt: revision 1.4 usr.sbin/btdevctl/sdp.c: revision 1.1 sys/dev/bluetooth/bthidev.c: revision 1.3 etc/bluetooth/Makefile: revision 1.3 sys/dev/pcmcia/files.pcmcia: revision 1.51 sys/dev/bluetooth/bthidev.c: revision 1.4 sys/dev/bluetooth/bthidev.h: revision 1.3 usr.sbin/btdevctl/dev.c: file removal sys/dev/bluetooth/files.bluetooth: revision 1.10 sys/arch/i386/conf/GENERIC: revision 1.777 share/man/man4/ubt.4: revision 1.6 share/man/man4/bthub.4: revision 1.3 sys/netbt/hci.h: revision 1.5 sys/arch/i386/conf/GENERIC_LAPTOP: revision 1.202 lib/libsdp/sdp.h: revision 1.2 usr.sbin/btdevctl/print.c: revision 1.1 share/man/man4/bthidev.4: revision 1.5 share/man/man4/btdev.4: file removal usr.sbin/btdevctl/print.c: revision 1.2 sys/arch/i386/conf/GENERIC_LAPTOP: revision 1.205 usr.sbin/btdevctl/Makefile: revision 1.2 sys/dev/usb/files.usb: revision 1.70 sys/netbt/l2cap_signal.c: revision 1.2 sys/netbt/hci_link.c: revision 1.4 sys/dev/bluetooth/bthub.c: revision 1.3 share/man/man4/btsco.4: revision 1.5 sys/netbt/hci_link.c: revision 1.5 share/man/man4/btdev.4: revision 1.4 sys/dev/bluetooth/btkbd.c: revision 1.3 sys/dev/bluetooth/btdev.c: file removal sys/netbt/hci_event.c: revision 1.2 sys/dev/bluetooth/btsco.h: revision 1.2 etc/mtree/special: revision 1.101 sys/dev/bluetooth/btsco.c: revision 1.3 sys/conf/majors: revision 1.27 usr.sbin/sdpd/hf.c: revision 1.1 sys/dev/bluetooth/btsco.c: revision 1.4 share/man/man5/rc.conf.5: revision 1.107 sys/dev/bluetooth/btdev.c: revision 1.2 etc/rc.d/btdevctl: revision 1.2 usr.sbin/btdevctl/db.c: revision 1.1 etc/rc.d/btdevctl: revision 1.3 etc/bluetooth/btdevctl.conf: revision 1.1 usr.sbin/btdevctl/hid.c: file removal sys/arch/i386/conf/GENERIC: revision 1.781 sys/dev/bluetooth/btdev.h: revision 1.3 Make btdev default count explicit Fix typo in variable name update to bluetooth device attachment: remove pseudo-device btdev(4) and inherent limitations add bthub(4) which autoconfigures at bluetooth controllers as they are enabled. bluetooth devices now attach here. btdevctl(8) and its cache is updated to handle new semantics etc/rc.d/btdevctl is updated to configure devices from a list in /etc/bluetooth/btdevctl.conf also include service name in dictionary being sent to kernel. (this is not used just yet, but it might be in the future and it will be easier if we dont have to provide code to handle its absence) clarify the CAVEAT section somewhat Add service discovery support for the Handsfree profile Replace static 'FreeBSD' string with operating system name gleaned from uname(3) Halt the callout on detach btsco.c: - sco_getopt(..., SO_SCO_MTU, ...) expects the address of a uint16_t, not an int. So change sc_mtu's type to uint16_t. - Try a little harder to ensure btsco_round_blocksize() does not return zero. Prevents a subsequent panic in audio_init_ringbuffer(). from scw@ Endian issues: hci_event.c: - Convert memo->response.clock_offset to host-endian. hci_ioctl.c: - printf format tweak (size_t) hci_link.c: - Convert memo->response.clock_offset from host-endian. - Tweak a DIAGNOSTIC message. l2cap_signal.c: - In l2cap_recv_config_req(), rp->scid is little-endian so make sure we convert from host-endian. from scw@ hci_link.c: - In hci_link_free(), do not unlink items from a LIST queue within a LIST_FOREACH() iterator. rfcomm_session.c: - In rfcomm_session_recv_mcc_nsc(), do not unlink items from a LIST queue within a LIST_FOREACH() iterator. from scw@ guard against a possible situation where the list of l2cap channels is changed when the bluetooth code is not expecting it to be. During a disconnect, we can detach the channel that is being disconnected, but its not really safe to detach any others. Print explicit 64-bit types using the format macros from int_fmtio.h. Unbreaks the build for our LP64 ports, where "long long" typically is not 64 bits.
update to bluetooth device attachment: remove pseudo-device btdev(4) and inherent limitations add bthub(4) which autoconfigures at bluetooth controllers as they are enabled. bluetooth devices now attach here. btdevctl(8) and its cache is updated to handle new semantics etc/rc.d/btdevctl is updated to configure devices from a list in /etc/bluetooth/btdevctl.conf