~juju-qa/ubuntu/yakkety/juju/2.0-rc3-again

« back to all changes in this revision

Viewing changes to src/code.google.com/p/go.net/ipv4/sockopt_unix.go

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2013-04-24 22:34:47 UTC
  • Revision ID: package-import@ubuntu.com-20130424223447-f0qdji7ubnyo0s71
Tags: upstream-1.10.0.1
ImportĀ upstreamĀ versionĀ 1.10.0.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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.
 
4
 
 
5
// +build darwin freebsd linux netbsd openbsd
 
6
 
 
7
package ipv4
 
8
 
 
9
import (
 
10
        "os"
 
11
        "syscall"
 
12
)
 
13
 
 
14
func ipv4TOS(fd int) (int, error) {
 
15
        v, err := syscall.GetsockoptInt(fd, syscall.IPPROTO_IP, syscall.IP_TOS)
 
16
        if err != nil {
 
17
                return 0, os.NewSyscallError("getsockopt", err)
 
18
        }
 
19
        return v, nil
 
20
}
 
21
 
 
22
func setIPv4TOS(fd int, v int) error {
 
23
        err := syscall.SetsockoptInt(fd, syscall.IPPROTO_IP, syscall.IP_TOS, v)
 
24
        if err != nil {
 
25
                return os.NewSyscallError("setsockopt", err)
 
26
        }
 
27
        return nil
 
28
}
 
29
 
 
30
func ipv4TTL(fd int) (int, error) {
 
31
        v, err := syscall.GetsockoptInt(fd, syscall.IPPROTO_IP, syscall.IP_TTL)
 
32
        if err != nil {
 
33
                return 0, os.NewSyscallError("getsockopt", err)
 
34
        }
 
35
        return v, nil
 
36
}
 
37
 
 
38
func setIPv4TTL(fd int, v int) error {
 
39
        err := syscall.SetsockoptInt(fd, syscall.IPPROTO_IP, syscall.IP_TTL, v)
 
40
        if err != nil {
 
41
                return os.NewSyscallError("setsockopt", err)
 
42
        }
 
43
        return nil
 
44
}
 
45
 
 
46
func ipv4ReceiveTTL(fd int) (bool, error) {
 
47
        v, err := syscall.GetsockoptInt(fd, syscall.IPPROTO_IP, syscall.IP_RECVTTL)
 
48
        if err != nil {
 
49
                return false, os.NewSyscallError("getsockopt", err)
 
50
        }
 
51
        return v == 1, nil
 
52
}
 
53
 
 
54
func setIPv4ReceiveTTL(fd int, v bool) error {
 
55
        err := syscall.SetsockoptInt(fd, syscall.IPPROTO_IP, syscall.IP_RECVTTL, boolint(v))
 
56
        if err != nil {
 
57
                return os.NewSyscallError("setsockopt", err)
 
58
        }
 
59
        return nil
 
60
}
 
61
 
 
62
func ipv4HeaderPrepend(fd int) (bool, error) {
 
63
        v, err := syscall.GetsockoptInt(fd, syscall.IPPROTO_IP, syscall.IP_HDRINCL)
 
64
        if err != nil {
 
65
                return false, os.NewSyscallError("getsockopt", err)
 
66
        }
 
67
        return v == 1, nil
 
68
}
 
69
 
 
70
func setIPv4HeaderPrepend(fd int, v bool) error {
 
71
        err := syscall.SetsockoptInt(fd, syscall.IPPROTO_IP, syscall.IP_HDRINCL, boolint(v))
 
72
        if err != nil {
 
73
                return os.NewSyscallError("setsockopt", err)
 
74
        }
 
75
        return nil
 
76
}