unix: implement RFCOMM sockets on Linux

Add the SockaddrRFCOMM type and the ability to accept BTPROTO_L2CAP and BTPROTO_RFCOMM protocol sockets.

Fixes golang/go#22211

Change-Id: I580b526c5392b90663499af0f2ebe6f55b1f8154
Reviewed-on: https://go-review.googlesource.com/122457
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com>
This commit is contained in:
Alexander Menzhinsky
2018-07-09 06:02:33 +00:00
committed by Tobias Klauser
parent 7b495ad4e7
commit 1b2967e3c2
18 changed files with 180 additions and 17 deletions
+10
View File
@@ -191,6 +191,13 @@ struct sockaddr_l2 {
uint8_t l2_bdaddr_type;
};
// copied from /usr/include/net/bluetooth/rfcomm.h
struct sockaddr_rc {
sa_family_t rc_family;
uint8_t rc_bdaddr[6];
uint8_t rc_channel;
};
// copied from /usr/include/linux/un.h
struct my_sockaddr_un {
sa_family_t sun_family;
@@ -401,6 +408,8 @@ type RawSockaddrHCI C.struct_sockaddr_hci
type RawSockaddrL2 C.struct_sockaddr_l2
type RawSockaddrRFCOMM C.struct_sockaddr_rc
type RawSockaddrCAN C.struct_sockaddr_can
type RawSockaddrALG C.struct_sockaddr_alg
@@ -450,6 +459,7 @@ const (
SizeofSockaddrNetlink = C.sizeof_struct_sockaddr_nl
SizeofSockaddrHCI = C.sizeof_struct_sockaddr_hci
SizeofSockaddrL2 = C.sizeof_struct_sockaddr_l2
SizeofSockaddrRFCOMM = C.sizeof_struct_sockaddr_rc
SizeofSockaddrCAN = C.sizeof_struct_sockaddr_can
SizeofSockaddrALG = C.sizeof_struct_sockaddr_alg
SizeofSockaddrVM = C.sizeof_struct_sockaddr_vm