| // 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. |
| |
| // +build darwin dragonfly freebsd linux netbsd openbsd |
| |
| package ipv6 |
| |
| import ( |
| "net" |
| "os" |
| "unsafe" |
| ) |
| |
| func setsockoptIPMreq(fd int, opt *sockOpt, ifi *net.Interface, grp net.IP) error { |
| var mreq sysIPv6Mreq |
| copy(mreq.Multiaddr[:], grp) |
| if ifi != nil { |
| mreq.setIfindex(ifi.Index) |
| } |
| return os.NewSyscallError("setsockopt", setsockopt(fd, opt.level, opt.name, unsafe.Pointer(&mreq), sysSizeofIPv6Mreq)) |
| } |