1
// Copyright 2012 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.
13
func ipv4ReceiveTOS(fd int) (bool, error) {
14
v, err := syscall.GetsockoptInt(fd, ianaProtocolIP, sysSockoptReceiveTOS)
16
return false, os.NewSyscallError("getsockopt", err)
21
func setIPv4ReceiveTOS(fd int, v bool) error {
22
return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(fd, ianaProtocolIP, sysSockoptReceiveTOS, boolint(v)))
25
func ipv4MulticastTTL(fd int) (int, error) {
26
v, err := syscall.GetsockoptInt(fd, ianaProtocolIP, sysSockoptMulticastTTL)
28
return 0, os.NewSyscallError("getsockopt", err)
33
func setIPv4MulticastTTL(fd int, v int) error {
34
return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(fd, ianaProtocolIP, sysSockoptMulticastTTL, v))
37
func ipv4MulticastInterface(fd int) (*net.Interface, error) {
38
mreqn, err := syscall.GetsockoptIPMreqn(fd, ianaProtocolIP, sysSockoptMulticastInterface)
40
return nil, os.NewSyscallError("getsockopt", err)
42
if mreqn.Ifindex == 0 {
45
return net.InterfaceByIndex(int(mreqn.Ifindex))
48
func setIPv4MulticastInterface(fd int, ifi *net.Interface) error {
49
var mreqn syscall.IPMreqn
51
mreqn.Ifindex = int32(ifi.Index)
53
return os.NewSyscallError("setsockopt", syscall.SetsockoptIPMreqn(fd, ianaProtocolIP, sysSockoptMulticastInterface, &mreqn))
56
func ipv4MulticastLoopback(fd int) (bool, error) {
57
v, err := syscall.GetsockoptInt(fd, ianaProtocolIP, sysSockoptMulticastLoopback)
59
return false, os.NewSyscallError("getsockopt", err)
64
func setIPv4MulticastLoopback(fd int, v bool) error {
65
return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(fd, ianaProtocolIP, sysSockoptMulticastLoopback, boolint(v)))