mirror of
https://github.com/golang/sys.git
synced 2026-01-29 15:12:09 +03:00
unix: add sockaddr_l2 definitions
The sockaddr_l2 address type is used with AF_BLUETOOTH sockets using the BTPROTO_L2CAP protocol. Change-Id: I263cfd3bb5920a8c1187ead6c2e0527276575d9f Reviewed-on: https://go-review.googlesource.com/89475 Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com> Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
committed by
Tobias Klauser
parent
af9a21289d
commit
ef802241c9
@@ -162,7 +162,21 @@ struct sockaddr_hci {
|
||||
sa_family_t hci_family;
|
||||
unsigned short hci_dev;
|
||||
unsigned short hci_channel;
|
||||
};;
|
||||
};
|
||||
|
||||
// copied from /usr/include/bluetooth/bluetooth.h
|
||||
#define BDADDR_BREDR 0x00
|
||||
#define BDADDR_LE_PUBLIC 0x01
|
||||
#define BDADDR_LE_RANDOM 0x02
|
||||
|
||||
// copied from /usr/include/bluetooth/l2cap.h
|
||||
struct sockaddr_l2 {
|
||||
sa_family_t l2_family;
|
||||
unsigned short l2_psm;
|
||||
uint8_t l2_bdaddr[6];
|
||||
unsigned short l2_cid;
|
||||
uint8_t l2_bdaddr_type;
|
||||
};
|
||||
|
||||
// copied from /usr/include/linux/un.h
|
||||
struct my_sockaddr_un {
|
||||
@@ -310,6 +324,8 @@ type RawSockaddrNetlink C.struct_sockaddr_nl
|
||||
|
||||
type RawSockaddrHCI C.struct_sockaddr_hci
|
||||
|
||||
type RawSockaddrL2 C.struct_sockaddr_l2
|
||||
|
||||
type RawSockaddrCAN C.struct_sockaddr_can
|
||||
|
||||
type RawSockaddrALG C.struct_sockaddr_alg
|
||||
@@ -358,6 +374,7 @@ const (
|
||||
SizeofSockaddrLinklayer = C.sizeof_struct_sockaddr_ll
|
||||
SizeofSockaddrNetlink = C.sizeof_struct_sockaddr_nl
|
||||
SizeofSockaddrHCI = C.sizeof_struct_sockaddr_hci
|
||||
SizeofSockaddrL2 = C.sizeof_struct_sockaddr_l2
|
||||
SizeofSockaddrCAN = C.sizeof_struct_sockaddr_can
|
||||
SizeofSockaddrALG = C.sizeof_struct_sockaddr_alg
|
||||
SizeofSockaddrVM = C.sizeof_struct_sockaddr_vm
|
||||
@@ -643,3 +660,11 @@ const (
|
||||
_CPU_SETSIZE = C.__CPU_SETSIZE
|
||||
_NCPUBITS = C.__NCPUBITS
|
||||
)
|
||||
|
||||
// Bluetooth
|
||||
|
||||
const (
|
||||
BDADDR_BREDR = C.BDADDR_BREDR
|
||||
BDADDR_LE_PUBLIC = C.BDADDR_LE_PUBLIC
|
||||
BDADDR_LE_RANDOM = C.BDADDR_LE_RANDOM
|
||||
)
|
||||
|
||||
@@ -475,6 +475,29 @@ func (sa *SockaddrHCI) sockaddr() (unsafe.Pointer, _Socklen, error) {
|
||||
return unsafe.Pointer(&sa.raw), SizeofSockaddrHCI, nil
|
||||
}
|
||||
|
||||
type SockaddrL2 struct {
|
||||
PSM uint16
|
||||
CID uint16
|
||||
Addr [6]uint8
|
||||
AddrType uint8
|
||||
raw RawSockaddrL2
|
||||
}
|
||||
|
||||
func (sa *SockaddrL2) sockaddr() (unsafe.Pointer, _Socklen, error) {
|
||||
sa.raw.Family = AF_BLUETOOTH
|
||||
psm := (*[2]byte)(unsafe.Pointer(&sa.raw.Psm))
|
||||
psm[0] = byte(sa.PSM)
|
||||
psm[1] = byte(sa.PSM >> 8)
|
||||
for i := 0; i < len(sa.Addr); i++ {
|
||||
sa.raw.Bdaddr[i] = sa.Addr[len(sa.Addr)-1-i]
|
||||
}
|
||||
cid := (*[2]byte)(unsafe.Pointer(&sa.raw.Cid))
|
||||
cid[0] = byte(sa.CID)
|
||||
cid[1] = byte(sa.CID >> 8)
|
||||
sa.raw.Bdaddr_type = sa.AddrType
|
||||
return unsafe.Pointer(&sa.raw), SizeofSockaddrL2, nil
|
||||
}
|
||||
|
||||
// SockaddrCAN implements the Sockaddr interface for AF_CAN type sockets.
|
||||
// The RxID and TxID fields are used for transport protocol addressing in
|
||||
// (CAN_TP16, CAN_TP20, CAN_MCNET, and CAN_ISOTP), they can be left with
|
||||
|
||||
@@ -254,6 +254,15 @@ type RawSockaddrHCI struct {
|
||||
Channel uint16
|
||||
}
|
||||
|
||||
type RawSockaddrL2 struct {
|
||||
Family uint16
|
||||
Psm uint16
|
||||
Bdaddr [6]uint8
|
||||
Cid uint16
|
||||
Bdaddr_type uint8
|
||||
_ [1]byte
|
||||
}
|
||||
|
||||
type RawSockaddrCAN struct {
|
||||
Family uint16
|
||||
_ [2]byte
|
||||
@@ -406,6 +415,7 @@ const (
|
||||
SizeofSockaddrLinklayer = 0x14
|
||||
SizeofSockaddrNetlink = 0xc
|
||||
SizeofSockaddrHCI = 0x6
|
||||
SizeofSockaddrL2 = 0xe
|
||||
SizeofSockaddrCAN = 0x10
|
||||
SizeofSockaddrALG = 0x58
|
||||
SizeofSockaddrVM = 0x10
|
||||
@@ -853,3 +863,9 @@ const (
|
||||
_CPU_SETSIZE = 0x400
|
||||
_NCPUBITS = 0x20
|
||||
)
|
||||
|
||||
const (
|
||||
BDADDR_BREDR = 0x0
|
||||
BDADDR_LE_PUBLIC = 0x1
|
||||
BDADDR_LE_RANDOM = 0x2
|
||||
)
|
||||
|
||||
@@ -256,6 +256,15 @@ type RawSockaddrHCI struct {
|
||||
Channel uint16
|
||||
}
|
||||
|
||||
type RawSockaddrL2 struct {
|
||||
Family uint16
|
||||
Psm uint16
|
||||
Bdaddr [6]uint8
|
||||
Cid uint16
|
||||
Bdaddr_type uint8
|
||||
_ [1]byte
|
||||
}
|
||||
|
||||
type RawSockaddrCAN struct {
|
||||
Family uint16
|
||||
_ [2]byte
|
||||
@@ -410,6 +419,7 @@ const (
|
||||
SizeofSockaddrLinklayer = 0x14
|
||||
SizeofSockaddrNetlink = 0xc
|
||||
SizeofSockaddrHCI = 0x6
|
||||
SizeofSockaddrL2 = 0xe
|
||||
SizeofSockaddrCAN = 0x10
|
||||
SizeofSockaddrALG = 0x58
|
||||
SizeofSockaddrVM = 0x10
|
||||
@@ -871,3 +881,9 @@ const (
|
||||
_CPU_SETSIZE = 0x400
|
||||
_NCPUBITS = 0x40
|
||||
)
|
||||
|
||||
const (
|
||||
BDADDR_BREDR = 0x0
|
||||
BDADDR_LE_PUBLIC = 0x1
|
||||
BDADDR_LE_RANDOM = 0x2
|
||||
)
|
||||
|
||||
@@ -258,6 +258,15 @@ type RawSockaddrHCI struct {
|
||||
Channel uint16
|
||||
}
|
||||
|
||||
type RawSockaddrL2 struct {
|
||||
Family uint16
|
||||
Psm uint16
|
||||
Bdaddr [6]uint8
|
||||
Cid uint16
|
||||
Bdaddr_type uint8
|
||||
_ [1]byte
|
||||
}
|
||||
|
||||
type RawSockaddrCAN struct {
|
||||
Family uint16
|
||||
_ [2]byte
|
||||
@@ -410,6 +419,7 @@ const (
|
||||
SizeofSockaddrLinklayer = 0x14
|
||||
SizeofSockaddrNetlink = 0xc
|
||||
SizeofSockaddrHCI = 0x6
|
||||
SizeofSockaddrL2 = 0xe
|
||||
SizeofSockaddrCAN = 0x10
|
||||
SizeofSockaddrALG = 0x58
|
||||
SizeofSockaddrVM = 0x10
|
||||
@@ -842,3 +852,9 @@ const (
|
||||
_CPU_SETSIZE = 0x400
|
||||
_NCPUBITS = 0x20
|
||||
)
|
||||
|
||||
const (
|
||||
BDADDR_BREDR = 0x0
|
||||
BDADDR_LE_PUBLIC = 0x1
|
||||
BDADDR_LE_RANDOM = 0x2
|
||||
)
|
||||
|
||||
@@ -257,6 +257,15 @@ type RawSockaddrHCI struct {
|
||||
Channel uint16
|
||||
}
|
||||
|
||||
type RawSockaddrL2 struct {
|
||||
Family uint16
|
||||
Psm uint16
|
||||
Bdaddr [6]uint8
|
||||
Cid uint16
|
||||
Bdaddr_type uint8
|
||||
_ [1]byte
|
||||
}
|
||||
|
||||
type RawSockaddrCAN struct {
|
||||
Family uint16
|
||||
_ [2]byte
|
||||
@@ -411,6 +420,7 @@ const (
|
||||
SizeofSockaddrLinklayer = 0x14
|
||||
SizeofSockaddrNetlink = 0xc
|
||||
SizeofSockaddrHCI = 0x6
|
||||
SizeofSockaddrL2 = 0xe
|
||||
SizeofSockaddrCAN = 0x10
|
||||
SizeofSockaddrALG = 0x58
|
||||
SizeofSockaddrVM = 0x10
|
||||
@@ -850,3 +860,9 @@ const (
|
||||
_CPU_SETSIZE = 0x400
|
||||
_NCPUBITS = 0x40
|
||||
)
|
||||
|
||||
const (
|
||||
BDADDR_BREDR = 0x0
|
||||
BDADDR_LE_PUBLIC = 0x1
|
||||
BDADDR_LE_RANDOM = 0x2
|
||||
)
|
||||
|
||||
@@ -257,6 +257,15 @@ type RawSockaddrHCI struct {
|
||||
Channel uint16
|
||||
}
|
||||
|
||||
type RawSockaddrL2 struct {
|
||||
Family uint16
|
||||
Psm uint16
|
||||
Bdaddr [6]uint8
|
||||
Cid uint16
|
||||
Bdaddr_type uint8
|
||||
_ [1]byte
|
||||
}
|
||||
|
||||
type RawSockaddrCAN struct {
|
||||
Family uint16
|
||||
_ [2]byte
|
||||
@@ -409,6 +418,7 @@ const (
|
||||
SizeofSockaddrLinklayer = 0x14
|
||||
SizeofSockaddrNetlink = 0xc
|
||||
SizeofSockaddrHCI = 0x6
|
||||
SizeofSockaddrL2 = 0xe
|
||||
SizeofSockaddrCAN = 0x10
|
||||
SizeofSockaddrALG = 0x58
|
||||
SizeofSockaddrVM = 0x10
|
||||
@@ -847,3 +857,9 @@ const (
|
||||
_CPU_SETSIZE = 0x400
|
||||
_NCPUBITS = 0x20
|
||||
)
|
||||
|
||||
const (
|
||||
BDADDR_BREDR = 0x0
|
||||
BDADDR_LE_PUBLIC = 0x1
|
||||
BDADDR_LE_RANDOM = 0x2
|
||||
)
|
||||
|
||||
@@ -257,6 +257,15 @@ type RawSockaddrHCI struct {
|
||||
Channel uint16
|
||||
}
|
||||
|
||||
type RawSockaddrL2 struct {
|
||||
Family uint16
|
||||
Psm uint16
|
||||
Bdaddr [6]uint8
|
||||
Cid uint16
|
||||
Bdaddr_type uint8
|
||||
_ [1]byte
|
||||
}
|
||||
|
||||
type RawSockaddrCAN struct {
|
||||
Family uint16
|
||||
_ [2]byte
|
||||
@@ -411,6 +420,7 @@ const (
|
||||
SizeofSockaddrLinklayer = 0x14
|
||||
SizeofSockaddrNetlink = 0xc
|
||||
SizeofSockaddrHCI = 0x6
|
||||
SizeofSockaddrL2 = 0xe
|
||||
SizeofSockaddrCAN = 0x10
|
||||
SizeofSockaddrALG = 0x58
|
||||
SizeofSockaddrVM = 0x10
|
||||
@@ -852,3 +862,9 @@ const (
|
||||
_CPU_SETSIZE = 0x400
|
||||
_NCPUBITS = 0x40
|
||||
)
|
||||
|
||||
const (
|
||||
BDADDR_BREDR = 0x0
|
||||
BDADDR_LE_PUBLIC = 0x1
|
||||
BDADDR_LE_RANDOM = 0x2
|
||||
)
|
||||
|
||||
@@ -257,6 +257,15 @@ type RawSockaddrHCI struct {
|
||||
Channel uint16
|
||||
}
|
||||
|
||||
type RawSockaddrL2 struct {
|
||||
Family uint16
|
||||
Psm uint16
|
||||
Bdaddr [6]uint8
|
||||
Cid uint16
|
||||
Bdaddr_type uint8
|
||||
_ [1]byte
|
||||
}
|
||||
|
||||
type RawSockaddrCAN struct {
|
||||
Family uint16
|
||||
_ [2]byte
|
||||
@@ -411,6 +420,7 @@ const (
|
||||
SizeofSockaddrLinklayer = 0x14
|
||||
SizeofSockaddrNetlink = 0xc
|
||||
SizeofSockaddrHCI = 0x6
|
||||
SizeofSockaddrL2 = 0xe
|
||||
SizeofSockaddrCAN = 0x10
|
||||
SizeofSockaddrALG = 0x58
|
||||
SizeofSockaddrVM = 0x10
|
||||
@@ -852,3 +862,9 @@ const (
|
||||
_CPU_SETSIZE = 0x400
|
||||
_NCPUBITS = 0x40
|
||||
)
|
||||
|
||||
const (
|
||||
BDADDR_BREDR = 0x0
|
||||
BDADDR_LE_PUBLIC = 0x1
|
||||
BDADDR_LE_RANDOM = 0x2
|
||||
)
|
||||
|
||||
@@ -257,6 +257,15 @@ type RawSockaddrHCI struct {
|
||||
Channel uint16
|
||||
}
|
||||
|
||||
type RawSockaddrL2 struct {
|
||||
Family uint16
|
||||
Psm uint16
|
||||
Bdaddr [6]uint8
|
||||
Cid uint16
|
||||
Bdaddr_type uint8
|
||||
_ [1]byte
|
||||
}
|
||||
|
||||
type RawSockaddrCAN struct {
|
||||
Family uint16
|
||||
_ [2]byte
|
||||
@@ -409,6 +418,7 @@ const (
|
||||
SizeofSockaddrLinklayer = 0x14
|
||||
SizeofSockaddrNetlink = 0xc
|
||||
SizeofSockaddrHCI = 0x6
|
||||
SizeofSockaddrL2 = 0xe
|
||||
SizeofSockaddrCAN = 0x10
|
||||
SizeofSockaddrALG = 0x58
|
||||
SizeofSockaddrVM = 0x10
|
||||
@@ -847,3 +857,9 @@ const (
|
||||
_CPU_SETSIZE = 0x400
|
||||
_NCPUBITS = 0x20
|
||||
)
|
||||
|
||||
const (
|
||||
BDADDR_BREDR = 0x0
|
||||
BDADDR_LE_PUBLIC = 0x1
|
||||
BDADDR_LE_RANDOM = 0x2
|
||||
)
|
||||
|
||||
@@ -258,6 +258,15 @@ type RawSockaddrHCI struct {
|
||||
Channel uint16
|
||||
}
|
||||
|
||||
type RawSockaddrL2 struct {
|
||||
Family uint16
|
||||
Psm uint16
|
||||
Bdaddr [6]uint8
|
||||
Cid uint16
|
||||
Bdaddr_type uint8
|
||||
_ [1]byte
|
||||
}
|
||||
|
||||
type RawSockaddrCAN struct {
|
||||
Family uint16
|
||||
_ [2]byte
|
||||
@@ -412,6 +421,7 @@ const (
|
||||
SizeofSockaddrLinklayer = 0x14
|
||||
SizeofSockaddrNetlink = 0xc
|
||||
SizeofSockaddrHCI = 0x6
|
||||
SizeofSockaddrL2 = 0xe
|
||||
SizeofSockaddrCAN = 0x10
|
||||
SizeofSockaddrALG = 0x58
|
||||
SizeofSockaddrVM = 0x10
|
||||
@@ -860,3 +870,9 @@ const (
|
||||
_CPU_SETSIZE = 0x400
|
||||
_NCPUBITS = 0x40
|
||||
)
|
||||
|
||||
const (
|
||||
BDADDR_BREDR = 0x0
|
||||
BDADDR_LE_PUBLIC = 0x1
|
||||
BDADDR_LE_RANDOM = 0x2
|
||||
)
|
||||
|
||||
@@ -258,6 +258,15 @@ type RawSockaddrHCI struct {
|
||||
Channel uint16
|
||||
}
|
||||
|
||||
type RawSockaddrL2 struct {
|
||||
Family uint16
|
||||
Psm uint16
|
||||
Bdaddr [6]uint8
|
||||
Cid uint16
|
||||
Bdaddr_type uint8
|
||||
_ [1]byte
|
||||
}
|
||||
|
||||
type RawSockaddrCAN struct {
|
||||
Family uint16
|
||||
_ [2]byte
|
||||
@@ -412,6 +421,7 @@ const (
|
||||
SizeofSockaddrLinklayer = 0x14
|
||||
SizeofSockaddrNetlink = 0xc
|
||||
SizeofSockaddrHCI = 0x6
|
||||
SizeofSockaddrL2 = 0xe
|
||||
SizeofSockaddrCAN = 0x10
|
||||
SizeofSockaddrALG = 0x58
|
||||
SizeofSockaddrVM = 0x10
|
||||
@@ -860,3 +870,9 @@ const (
|
||||
_CPU_SETSIZE = 0x400
|
||||
_NCPUBITS = 0x40
|
||||
)
|
||||
|
||||
const (
|
||||
BDADDR_BREDR = 0x0
|
||||
BDADDR_LE_PUBLIC = 0x1
|
||||
BDADDR_LE_RANDOM = 0x2
|
||||
)
|
||||
|
||||
@@ -257,6 +257,15 @@ type RawSockaddrHCI struct {
|
||||
Channel uint16
|
||||
}
|
||||
|
||||
type RawSockaddrL2 struct {
|
||||
Family uint16
|
||||
Psm uint16
|
||||
Bdaddr [6]uint8
|
||||
Cid uint16
|
||||
Bdaddr_type uint8
|
||||
_ [1]byte
|
||||
}
|
||||
|
||||
type RawSockaddrCAN struct {
|
||||
Family uint16
|
||||
_ [2]byte
|
||||
@@ -411,6 +420,7 @@ const (
|
||||
SizeofSockaddrLinklayer = 0x14
|
||||
SizeofSockaddrNetlink = 0xc
|
||||
SizeofSockaddrHCI = 0x6
|
||||
SizeofSockaddrL2 = 0xe
|
||||
SizeofSockaddrCAN = 0x10
|
||||
SizeofSockaddrALG = 0x58
|
||||
SizeofSockaddrVM = 0x10
|
||||
@@ -877,3 +887,9 @@ const (
|
||||
_CPU_SETSIZE = 0x400
|
||||
_NCPUBITS = 0x40
|
||||
)
|
||||
|
||||
const (
|
||||
BDADDR_BREDR = 0x0
|
||||
BDADDR_LE_PUBLIC = 0x1
|
||||
BDADDR_LE_RANDOM = 0x2
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user