Skip to content

Commit 2a824cf

Browse files
committed
ipv6: don't refer to cgo-generated union field
The size of sockaddr_storage is fixed for interoperability on each platform. There is no need to depend on changable cgo-generated offset values. Change-Id: I54b775b2a8c86d969a6da0398a335075f0cbe3df Reviewed-on: https://go-review.googlesource.com/30178 Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
1 parent 534e187 commit 2a824cf

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

ipv6/sys_darwin.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -87,18 +87,18 @@ func (mreq *sysIPv6Mreq) setIfindex(i int) {
8787
}
8888

8989
func (gr *sysGroupReq) setGroup(grp net.IP) {
90-
sa := (*sysSockaddrInet6)(unsafe.Pointer(&gr.Pad_cgo_0[0]))
90+
sa := (*sysSockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gr)) + 4))
9191
sa.Len = sysSizeofSockaddrInet6
9292
sa.Family = syscall.AF_INET6
9393
copy(sa.Addr[:], grp)
9494
}
9595

9696
func (gsr *sysGroupSourceReq) setSourceGroup(grp, src net.IP) {
97-
sa := (*sysSockaddrInet6)(unsafe.Pointer(&gsr.Pad_cgo_0[0]))
97+
sa := (*sysSockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 4))
9898
sa.Len = sysSizeofSockaddrInet6
9999
sa.Family = syscall.AF_INET6
100100
copy(sa.Addr[:], grp)
101-
sa = (*sysSockaddrInet6)(unsafe.Pointer(&gsr.Pad_cgo_1[0]))
101+
sa = (*sysSockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 132))
102102
sa.Len = sysSizeofSockaddrInet6
103103
sa.Family = syscall.AF_INET6
104104
copy(sa.Addr[:], src)

0 commit comments

Comments
 (0)