syscall: add source-specific multicast socket options for Darwin
Update #8266
LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews
https://golang.org/cl/101460043
diff --git a/src/pkg/syscall/types_darwin.go b/src/pkg/syscall/types_darwin.go
index 2f001a5..93dd297 100644
--- a/src/pkg/syscall/types_darwin.go
+++ b/src/pkg/syscall/types_darwin.go
@@ -142,6 +142,8 @@
type RawSockaddrAny C.struct_sockaddr_any
+type RawSockaddrStorage C.struct_sockaddr_storage
+
type _Socklen C.socklen_t
type Linger C.struct_linger
@@ -152,6 +154,10 @@
type IPv6Mreq C.struct_ipv6_mreq
+type GroupReq C.struct_group_req
+
+type GroupSourceReq C.struct_group_source_req
+
type Msghdr C.struct_msghdr
type Cmsghdr C.struct_cmsghdr
@@ -168,11 +174,14 @@
SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in
SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6
SizeofSockaddrAny = C.sizeof_struct_sockaddr_any
+ SizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage
SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un
SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl
SizeofLinger = C.sizeof_struct_linger
SizeofIPMreq = C.sizeof_struct_ip_mreq
SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq
+ SizeofGroupReq = C.sizeof_struct_group_req
+ SizeofGroupSourceReq = C.sizeof_struct_group_source_req
SizeofMsghdr = C.sizeof_struct_msghdr
SizeofCmsghdr = C.sizeof_struct_cmsghdr
SizeofInet4Pktinfo = C.sizeof_struct_in_pktinfo
diff --git a/src/pkg/syscall/zerrors_darwin_386.go b/src/pkg/syscall/zerrors_darwin_386.go
index 763b5c4..e3d78af 100644
--- a/src/pkg/syscall/zerrors_darwin_386.go
+++ b/src/pkg/syscall/zerrors_darwin_386.go
@@ -785,6 +785,15 @@
MAP_RENAME = 0x20
MAP_RESERVED0080 = 0x80
MAP_SHARED = 0x1
+ MCAST_BLOCK_SOURCE = 0x54
+ MCAST_EXCLUDE = 0x2
+ MCAST_INCLUDE = 0x1
+ MCAST_JOIN_GROUP = 0x50
+ MCAST_JOIN_SOURCE_GROUP = 0x52
+ MCAST_LEAVE_GROUP = 0x51
+ MCAST_LEAVE_SOURCE_GROUP = 0x53
+ MCAST_UNBLOCK_SOURCE = 0x55
+ MCAST_UNDEFINED = 0x0
MCL_CURRENT = 0x1
MCL_FUTURE = 0x2
MSG_CTRUNC = 0x20
diff --git a/src/pkg/syscall/zerrors_darwin_amd64.go b/src/pkg/syscall/zerrors_darwin_amd64.go
index d0719fe..8128092 100644
--- a/src/pkg/syscall/zerrors_darwin_amd64.go
+++ b/src/pkg/syscall/zerrors_darwin_amd64.go
@@ -785,6 +785,15 @@
MAP_RENAME = 0x20
MAP_RESERVED0080 = 0x80
MAP_SHARED = 0x1
+ MCAST_BLOCK_SOURCE = 0x54
+ MCAST_EXCLUDE = 0x2
+ MCAST_INCLUDE = 0x1
+ MCAST_JOIN_GROUP = 0x50
+ MCAST_JOIN_SOURCE_GROUP = 0x52
+ MCAST_LEAVE_GROUP = 0x51
+ MCAST_LEAVE_SOURCE_GROUP = 0x53
+ MCAST_UNBLOCK_SOURCE = 0x55
+ MCAST_UNDEFINED = 0x0
MCL_CURRENT = 0x1
MCL_FUTURE = 0x2
MSG_CTRUNC = 0x20
diff --git a/src/pkg/syscall/ztypes_darwin_386.go b/src/pkg/syscall/ztypes_darwin_386.go
index 13724c3..63bec22 100644
--- a/src/pkg/syscall/ztypes_darwin_386.go
+++ b/src/pkg/syscall/ztypes_darwin_386.go
@@ -188,6 +188,14 @@
Pad [92]int8
}
+type RawSockaddrStorage struct {
+ Len uint8
+ Family uint8
+ X__ss_pad1 [6]int8
+ X__ss_align int64
+ X__ss_pad2 [112]int8
+}
+
type _Socklen uint32
type Linger struct {
@@ -210,6 +218,17 @@
Interface uint32
}
+type GroupReq struct {
+ Interface uint32
+ Group RawSockaddrStorage
+}
+
+type GroupSourceReq struct {
+ Interface uint32
+ Group RawSockaddrStorage
+ Source RawSockaddrStorage
+}
+
type Msghdr struct {
Name *byte
Namelen uint32
@@ -250,11 +269,14 @@
SizeofSockaddrInet4 = 0x10
SizeofSockaddrInet6 = 0x1c
SizeofSockaddrAny = 0x6c
+ SizeofSockaddrStorage = 0x80
SizeofSockaddrUnix = 0x6a
SizeofSockaddrDatalink = 0x14
SizeofLinger = 0x8
SizeofIPMreq = 0x8
SizeofIPv6Mreq = 0x14
+ SizeofGroupReq = 0x84
+ SizeofGroupSourceReq = 0x104
SizeofMsghdr = 0x1c
SizeofCmsghdr = 0xc
SizeofInet4Pktinfo = 0xc
diff --git a/src/pkg/syscall/ztypes_darwin_amd64.go b/src/pkg/syscall/ztypes_darwin_amd64.go
index 65b02ae..6af958a 100644
--- a/src/pkg/syscall/ztypes_darwin_amd64.go
+++ b/src/pkg/syscall/ztypes_darwin_amd64.go
@@ -194,6 +194,14 @@
Pad [92]int8
}
+type RawSockaddrStorage struct {
+ Len uint8
+ Family uint8
+ X__ss_pad1 [6]int8
+ X__ss_align int64
+ X__ss_pad2 [112]int8
+}
+
type _Socklen uint32
type Linger struct {
@@ -216,6 +224,17 @@
Interface uint32
}
+type GroupReq struct {
+ Interface uint32
+ Pad_cgo_0 [128]byte
+}
+
+type GroupSourceReq struct {
+ Interface uint32
+ Pad_cgo_0 [128]byte
+ Pad_cgo_1 [128]byte
+}
+
type Msghdr struct {
Name *byte
Namelen uint32
@@ -258,11 +277,14 @@
SizeofSockaddrInet4 = 0x10
SizeofSockaddrInet6 = 0x1c
SizeofSockaddrAny = 0x6c
+ SizeofSockaddrStorage = 0x80
SizeofSockaddrUnix = 0x6a
SizeofSockaddrDatalink = 0x14
SizeofLinger = 0x8
SizeofIPMreq = 0x8
SizeofIPv6Mreq = 0x14
+ SizeofGroupReq = 0x84
+ SizeofGroupSourceReq = 0x104
SizeofMsghdr = 0x30
SizeofCmsghdr = 0xc
SizeofInet4Pktinfo = 0xc