// Copyright 2013 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || windows

package ipv6

import (
	
	

	
)

func ( *sockOpt) ( *socket.Conn,  *net.Interface,  net.IP) error {
	var  ipv6Mreq
	copy(.Multiaddr[:], )
	if  != nil {
		.setIfindex(.Index)
	}
	 := (*[sizeofIPv6Mreq]byte)(unsafe.Pointer(&))[:sizeofIPv6Mreq]
	return .Set(, )
}