package  netimport  (	"runtime" 	"syscall" )func  joinIPv4Group fd  *netFD , ifi  *Interface , ip  IP ) error  {	mreq  := &syscall .IPMreq {Multiaddr : [4 ]byte {ip [0 ], ip [1 ], ip [2 ], ip [3 ]}}	if  err  := setIPv4MreqToInterface (mreq , ifi ); err  != nil  {		return  err 	}	err  := fd .pfd .SetsockoptIPMreq (syscall .IPPROTO_IP , syscall .IP_ADD_MEMBERSHIP , mreq )	runtime .KeepAlive (fd )	return  wrapSyscallError ("setsockopt" , err )}func  setIPv6MulticastInterface fd  *netFD , ifi  *Interface ) error  {	var  v  int 	if  ifi  != nil  {		v  = ifi .Index 	}	err  := fd .pfd .SetsockoptInt (syscall .IPPROTO_IPV6 , syscall .IPV6_MULTICAST_IF , v )	runtime .KeepAlive (fd )	return  wrapSyscallError ("setsockopt" , err )}func  setIPv6MulticastLoopback fd  *netFD , v  bool ) error  {	err  := fd .pfd .SetsockoptInt (syscall .IPPROTO_IPV6 , syscall .IPV6_MULTICAST_LOOP , boolint (v ))	runtime .KeepAlive (fd )	return  wrapSyscallError ("setsockopt" , err )}func  joinIPv6Group fd  *netFD , ifi  *Interface , ip  IP ) error  {	mreq  := &syscall .IPv6Mreq {}	copy (mreq .Multiaddr [:], ip )	if  ifi  != nil  {		mreq .Interface  = uint32 (ifi .Index )	}	err  := fd .pfd .SetsockoptIPv6Mreq (syscall .IPPROTO_IPV6 , syscall .IPV6_JOIN_GROUP , mreq )	runtime .KeepAlive (fd )	return  wrapSyscallError ("setsockopt" , err )} The pages are generated with Golds v0.7.6 . (GOOS=linux GOARCH=amd64)
Golds  is a Go 101  project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @zigo_101  (reachable from the left QR code) to get the latest news of Golds .