$2 ~ /^O[CNPFP][A-Z]+[^_][A-Z]+$/ ||
$2 ~ /^IN_/ ||
$2 ~ /^LOCK_(SH|EX|NB|UN)$/ ||
- $2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|ICMP6|TCP|EVFILT|NOTE|EV|SHUT|PROT|MAP|PACKET|MSG|SCM|MCL|DT|MADV|PR)_/ ||
+ $2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|ICMP6|TCP|EVFILT|NOTE|EV|SHUT|PROT|MAP|PACKET|MSG|SCM|MCL|DT|MADV|PR|MCAST)_/ ||
$2 == "ICMPV6_FILTER" ||
$2 == "SOMAXCONN" ||
$2 == "NAME_MAX" ||
}
func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) {
- var value IPMreqn
- vallen := _Socklen(SizeofIPMreqn)
- errno := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
- return &value, errno
+ var v IPMreqn
+ l := _Socklen(SizeofIPMreqn)
+ err := getsockopt(fd, level, opt, unsafe.Pointer(&v), &l)
+ return &v, err
}
-func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) {
- return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))
+func GetsockoptGroupReq(fd, level, opt int) (*GroupReq, error) {
+ var v GroupReq
+ l := _Socklen(SizeofGroupReq)
+ err := getsockopt(fd, level, opt, unsafe.Pointer(&v), &l)
+ return &v, err
+}
+
+func GetsockoptGroupSourceReq(fd, level, opt int) (*GroupSourceReq, error) {
+ var v GroupSourceReq
+ l := _Socklen(SizeofGroupSourceReq)
+ err := getsockopt(fd, level, opt, unsafe.Pointer(&v), &l)
+ return &v, err
+}
+
+func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) error {
+ return setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPMreqn)
+}
+
+func SetsockoptGroupReq(fd, level, opt int, greq *GroupReq) error {
+ return setsockopt(fd, level, opt, unsafe.Pointer(greq), SizeofGroupReq)
+}
+
+func SetsockoptGroupSourceReq(fd, level, opt int, gsreq *GroupSourceReq) error {
+ return setsockopt(fd, level, opt, unsafe.Pointer(gsreq), SizeofGroupSourceReq)
}
func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) {
type RawSockaddrAny C.struct_sockaddr_any
+type RawSockaddrStorage C.struct_sockaddr_storage
+
type _Socklen C.socklen_t
type Linger C.struct_linger
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
SizeofSockaddrAny = C.sizeof_struct_sockaddr_any
SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un
SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl
+ SizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage
SizeofLinger = C.sizeof_struct_linger
SizeofIPMreq = C.sizeof_struct_ip_mreq
SizeofIPMreqn = C.sizeof_struct_ip_mreqn
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
SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo
MAP_RESERVED0100 = 0x100
MAP_SHARED = 0x1
MAP_STACK = 0x400
+ 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_CMSG_CLOEXEC = 0x40000
MAP_RESERVED0100 = 0x100
MAP_SHARED = 0x1
MAP_STACK = 0x400
+ 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_CMSG_CLOEXEC = 0x40000
MAP_RESERVED0100 = 0x100
MAP_SHARED = 0x1
MAP_STACK = 0x400
+ 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_CMSG_CLOEXEC = 0x40000
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 {
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
SizeofSockaddrAny = 0x6c
SizeofSockaddrUnix = 0x6a
SizeofSockaddrDatalink = 0x36
+ SizeofSockaddrStorage = 0x80
SizeofLinger = 0x8
SizeofIPMreq = 0x8
SizeofIPMreqn = 0xc
SizeofIPv6Mreq = 0x14
+ SizeofGroupReq = 0x84
+ SizeofGroupSourceReq = 0x104
SizeofMsghdr = 0x1c
SizeofCmsghdr = 0xc
SizeofInet6Pktinfo = 0x14
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 {
Interface uint32
}
+type GroupReq struct {
+ Interface uint32
+ Pad_cgo_0 [4]byte
+ Group RawSockaddrStorage
+}
+
+type GroupSourceReq struct {
+ Interface uint32
+ Pad_cgo_0 [4]byte
+ Group RawSockaddrStorage
+ Source RawSockaddrStorage
+}
+
type Msghdr struct {
Name *byte
Namelen uint32
SizeofSockaddrAny = 0x6c
SizeofSockaddrUnix = 0x6a
SizeofSockaddrDatalink = 0x36
+ SizeofSockaddrStorage = 0x80
SizeofLinger = 0x8
SizeofIPMreq = 0x8
SizeofIPMreqn = 0xc
SizeofIPv6Mreq = 0x14
+ SizeofGroupReq = 0x88
+ SizeofGroupSourceReq = 0x108
SizeofMsghdr = 0x30
SizeofCmsghdr = 0xc
SizeofInet6Pktinfo = 0x14
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 {
Interface uint32
}
+type GroupReq struct {
+ Interface uint32
+ Pad_cgo_0 [4]byte
+ Group RawSockaddrStorage
+}
+
+type GroupSourceReq struct {
+ Interface uint32
+ Pad_cgo_0 [4]byte
+ Group RawSockaddrStorage
+ Source RawSockaddrStorage
+}
+
type Msghdr struct {
Name *byte
Namelen uint32
SizeofSockaddrAny = 0x6c
SizeofSockaddrUnix = 0x6a
SizeofSockaddrDatalink = 0x36
+ SizeofSockaddrStorage = 0x80
SizeofLinger = 0x8
SizeofIPMreq = 0x8
SizeofIPMreqn = 0xc
SizeofIPv6Mreq = 0x14
+ SizeofGroupReq = 0x88
+ SizeofGroupSourceReq = 0x108
SizeofMsghdr = 0x1c
SizeofCmsghdr = 0xc
SizeofInet6Pktinfo = 0x14