LEFT | RIGHT |
(no file at all) | |
1 // Copyright 2011 The Go Authors. All rights reserved. | 1 // Copyright 2011 The Go Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style | 2 // Use of this source code is governed by a BSD-style |
3 // license that can be found in the LICENSE file. | 3 // license that can be found in the LICENSE file. |
4 | 4 |
5 // +build darwin freebsd netbsd openbsd | 5 // +build darwin freebsd netbsd openbsd |
6 | 6 |
7 package net | 7 package net |
8 | 8 |
9 import ( | 9 import ( |
10 "os" | 10 "os" |
11 "syscall" | 11 "syscall" |
12 ) | 12 ) |
13 | 13 |
14 func setIPv4MulticastInterface(fd *netFD, ifi *Interface) error { | 14 func setIPv4MulticastInterface(fd *netFD, ifi *Interface) error { |
15 ip, err := interfaceToIPv4Addr(ifi) | 15 ip, err := interfaceToIPv4Addr(ifi) |
16 if err != nil { | 16 if err != nil { |
17 return os.NewSyscallError("setsockopt", err) | 17 return os.NewSyscallError("setsockopt", err) |
18 } | 18 } |
19 var a [4]byte | 19 var a [4]byte |
20 copy(a[:], ip.To4()) | 20 copy(a[:], ip.To4()) |
21 » if err := fd.incref(false); err != nil { | 21 » if err := fd.incref(); err != nil { |
22 return err | 22 return err |
23 } | 23 } |
24 defer fd.decref() | 24 defer fd.decref() |
25 return os.NewSyscallError("setsockopt", syscall.SetsockoptInet4Addr(fd.s
ysfd, syscall.IPPROTO_IP, syscall.IP_MULTICAST_IF, a)) | 25 return os.NewSyscallError("setsockopt", syscall.SetsockoptInet4Addr(fd.s
ysfd, syscall.IPPROTO_IP, syscall.IP_MULTICAST_IF, a)) |
26 } | 26 } |
27 | 27 |
28 func setIPv4MulticastLoopback(fd *netFD, v bool) error { | 28 func setIPv4MulticastLoopback(fd *netFD, v bool) error { |
29 » if err := fd.incref(false); err != nil { | 29 » if err := fd.incref(); err != nil { |
30 return err | 30 return err |
31 } | 31 } |
32 defer fd.decref() | 32 defer fd.decref() |
33 return os.NewSyscallError("setsockopt", syscall.SetsockoptByte(fd.sysfd,
syscall.IPPROTO_IP, syscall.IP_MULTICAST_LOOP, byte(boolint(v)))) | 33 return os.NewSyscallError("setsockopt", syscall.SetsockoptByte(fd.sysfd,
syscall.IPPROTO_IP, syscall.IP_MULTICAST_LOOP, byte(boolint(v)))) |
34 } | 34 } |
LEFT | RIGHT |