blob: 8e1dcef9dee1b3c6ef797e0ca1a5d97ab64b9e45 [file] [log] [blame]
Mikio Harae9210112014-11-13 17:20:40 +09001// Copyright 2014 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5// +build darwin freebsd linux
6
7package ipv6
8
9import (
10 "net"
11 "os"
12 "unsafe"
13)
14
15func setsockoptGroupReq(fd int, opt *sockOpt, ifi *net.Interface, grp net.IP) error {
16 var gr sysGroupReq
17 if ifi != nil {
18 gr.Interface = uint32(ifi.Index)
19 }
20 gr.setGroup(grp)
21 return os.NewSyscallError("setsockopt", setsockopt(fd, opt.level, opt.name, unsafe.Pointer(&gr), sysSizeofGroupReq))
22}
23
24func setsockoptGroupSourceReq(fd int, opt *sockOpt, ifi *net.Interface, grp, src net.IP) error {
25 var gsr sysGroupSourceReq
26 if ifi != nil {
27 gsr.Interface = uint32(ifi.Index)
28 }
29 gsr.setSourceGroup(grp, src)
30 return os.NewSyscallError("setsockopt", setsockopt(fd, opt.level, opt.name, unsafe.Pointer(&gsr), sysSizeofGroupSourceReq))
31}