Selaa lähdekoodia

unix: add sockaddr_hci support for linux.

Change-Id: Ic2eb52d4e9f7b80992707b125c11be54d7973314
Reviewed-on: https://go-review.googlesource.com/21674
Reviewed-by: Minux Ma <minux@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
Tzu-Jung Lee 9 vuotta sitten
vanhempi
commit
a80ff226bd

+ 13 - 0
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:

+ 3 - 0
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

+ 7 - 0
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

+ 7 - 0
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

+ 7 - 0
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

+ 7 - 0
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

+ 7 - 0
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

+ 7 - 0
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

+ 7 - 0
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

+ 7 - 0
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