From a80ff226bd294315526e7ae48959d55635143ea7 Mon Sep 17 00:00:00 2001 From: Tzu-Jung Lee Date: Thu, 7 Apr 2016 16:01:11 -0700 Subject: [PATCH] unix: add sockaddr_hci support for linux. Change-Id: Ic2eb52d4e9f7b80992707b125c11be54d7973314 Reviewed-on: https://go-review.googlesource.com/21674 Reviewed-by: Minux Ma Run-TryBot: Brad Fitzpatrick --- unix/syscall_linux.go | 13 +++++++++++++ unix/types_linux.go | 3 +++ unix/ztypes_linux_386.go | 7 +++++++ unix/ztypes_linux_amd64.go | 7 +++++++ unix/ztypes_linux_arm.go | 7 +++++++ unix/ztypes_linux_arm64.go | 7 +++++++ unix/ztypes_linux_mips64.go | 7 +++++++ unix/ztypes_linux_mips64le.go | 7 +++++++ unix/ztypes_linux_ppc64.go | 7 +++++++ unix/ztypes_linux_ppc64le.go | 7 +++++++ 10 files changed, 72 insertions(+) diff --git a/unix/syscall_linux.go b/unix/syscall_linux.go index 464344e5..5182d053 100644 --- a/unix/syscall_linux.go +++ b/unix/syscall_linux.go @@ -394,6 +394,19 @@ func (sa *SockaddrNetlink) sockaddr() (unsafe.Pointer, _Socklen, error) { return unsafe.Pointer(&sa.raw), SizeofSockaddrNetlink, nil } +type SockaddrHCI struct { + Dev uint16 + Channel uint16 + raw RawSockaddrHCI +} + +func (sa *SockaddrHCI) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_BLUETOOTH + sa.raw.Dev = sa.Dev + sa.raw.Channel = sa.Channel + return unsafe.Pointer(&sa.raw), SizeofSockaddrHCI, nil +} + func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) { switch rsa.Addr.Family { case AF_NETLINK: diff --git a/unix/types_linux.go b/unix/types_linux.go index 7b53590a..9a8d2b6f 100644 --- a/unix/types_linux.go +++ b/unix/types_linux.go @@ -196,6 +196,8 @@ type RawSockaddrLinklayer C.struct_sockaddr_ll type RawSockaddrNetlink C.struct_sockaddr_nl +type RawSockaddrHCI C.struct_sockaddr_hci + type RawSockaddr C.struct_sockaddr type RawSockaddrAny C.struct_sockaddr_any @@ -235,6 +237,7 @@ const ( SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un SizeofSockaddrLinklayer = C.sizeof_struct_sockaddr_ll SizeofSockaddrNetlink = C.sizeof_struct_sockaddr_nl + SizeofSockaddrHCI = C.sizeof_struct_sockaddr_hci SizeofLinger = C.sizeof_struct_linger SizeofIPMreq = C.sizeof_struct_ip_mreq SizeofIPMreqn = C.sizeof_struct_ip_mreqn diff --git a/unix/ztypes_linux_386.go b/unix/ztypes_linux_386.go index 650bf22f..72c7f091 100644 --- a/unix/ztypes_linux_386.go +++ b/unix/ztypes_linux_386.go @@ -188,6 +188,12 @@ type RawSockaddrNetlink struct { Groups uint32 } +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -310,6 +316,7 @@ const ( SizeofSockaddrUnix = 0x6e SizeofSockaddrLinklayer = 0x14 SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 SizeofLinger = 0x8 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc diff --git a/unix/ztypes_linux_amd64.go b/unix/ztypes_linux_amd64.go index 539ec3ca..70a443f4 100644 --- a/unix/ztypes_linux_amd64.go +++ b/unix/ztypes_linux_amd64.go @@ -190,6 +190,12 @@ type RawSockaddrNetlink struct { Groups uint32 } +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -314,6 +320,7 @@ const ( SizeofSockaddrUnix = 0x6e SizeofSockaddrLinklayer = 0x14 SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 SizeofLinger = 0x8 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc diff --git a/unix/ztypes_linux_arm.go b/unix/ztypes_linux_arm.go index f437a497..0fef350b 100644 --- a/unix/ztypes_linux_arm.go +++ b/unix/ztypes_linux_arm.go @@ -192,6 +192,12 @@ type RawSockaddrNetlink struct { Groups uint32 } +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + type RawSockaddr struct { Family uint16 Data [14]uint8 @@ -314,6 +320,7 @@ const ( SizeofSockaddrUnix = 0x6e SizeofSockaddrLinklayer = 0x14 SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 SizeofLinger = 0x8 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc diff --git a/unix/ztypes_linux_arm64.go b/unix/ztypes_linux_arm64.go index 1028fcd6..7939c4ce 100644 --- a/unix/ztypes_linux_arm64.go +++ b/unix/ztypes_linux_arm64.go @@ -200,6 +200,12 @@ type RawSockaddrNetlink struct { Groups uint32 } +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -324,6 +330,7 @@ const ( SizeofSockaddrUnix = 0x6e SizeofSockaddrLinklayer = 0x14 SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 SizeofLinger = 0x8 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc diff --git a/unix/ztypes_linux_mips64.go b/unix/ztypes_linux_mips64.go index f08b5314..8fe5af26 100644 --- a/unix/ztypes_linux_mips64.go +++ b/unix/ztypes_linux_mips64.go @@ -200,6 +200,12 @@ type RawSockaddrNetlink struct { Groups uint32 } +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -323,6 +329,7 @@ const ( SizeofSockaddrUnix = 0x6e SizeofSockaddrLinklayer = 0x14 SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 SizeofLinger = 0x8 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc diff --git a/unix/ztypes_linux_mips64le.go b/unix/ztypes_linux_mips64le.go index 45e0df6b..df16e83c 100644 --- a/unix/ztypes_linux_mips64le.go +++ b/unix/ztypes_linux_mips64le.go @@ -200,6 +200,12 @@ type RawSockaddrNetlink struct { Groups uint32 } +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -323,6 +329,7 @@ const ( SizeofSockaddrUnix = 0x6e SizeofSockaddrLinklayer = 0x14 SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 SizeofLinger = 0x8 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc diff --git a/unix/ztypes_linux_ppc64.go b/unix/ztypes_linux_ppc64.go index 2bc296eb..66d99ea7 100644 --- a/unix/ztypes_linux_ppc64.go +++ b/unix/ztypes_linux_ppc64.go @@ -201,6 +201,12 @@ type RawSockaddrNetlink struct { Groups uint32 } +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + type RawSockaddr struct { Family uint16 Data [14]uint8 @@ -325,6 +331,7 @@ const ( SizeofSockaddrUnix = 0x6e SizeofSockaddrLinklayer = 0x14 SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 SizeofLinger = 0x8 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc diff --git a/unix/ztypes_linux_ppc64le.go b/unix/ztypes_linux_ppc64le.go index 0a668931..f7c84513 100644 --- a/unix/ztypes_linux_ppc64le.go +++ b/unix/ztypes_linux_ppc64le.go @@ -201,6 +201,12 @@ type RawSockaddrNetlink struct { Groups uint32 } +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + type RawSockaddr struct { Family uint16 Data [14]uint8 @@ -325,6 +331,7 @@ const ( SizeofSockaddrUnix = 0x6e SizeofSockaddrLinklayer = 0x14 SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 SizeofLinger = 0x8 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc