~smoser/ubuntu/precise/juju-core/cloud-tools

« back to all changes in this revision

Viewing changes to src/code.google.com/p/go.net/ipv6/sockopt_rfc3493_windows.go

  • Committer: Scott Moser
  • Date: 2014-04-14 16:22:55 UTC
  • mfrom: (24.1.11 trusty-proposed)
  • Revision ID: smoser@ubuntu.com-20140414162255-1gco8gmo03v3aff6
* New update for the Ubuntu Cloud Archive.
* New upstream point release, including fixes for:
  - Upgrading juju 1.16.6 -> 1.18.x fails (LP: #1299802).
  - Peer relation disappears during juju-upgrade (LP: #1303697).
  - public-address of units changes to internal bridge post upgrade
    (LP: #1303735).
  - Unable to deploy local charms without series (LP: #1303880).
  - juju scp no longer allows multiple extra arguments to be passed
    (LP: #1306208).
  - juju cannot downgrade to same major.minor version with earlier
    patch number (LP: #1306296).

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
func ipv6HopLimit(fd syscall.Handle) (int, error) {
25
25
        var v int32
26
26
        l := int32(4)
27
 
        if err := syscall.Getsockopt(fd, ianaProtocolIPv6, syscall.IPV6_UNICAST_HOPS, (*byte)(unsafe.Pointer(&v)), &l); err != nil {
 
27
        if err := syscall.Getsockopt(fd, ianaProtocolIPv6, sysSockoptUnicastHopLimit, (*byte)(unsafe.Pointer(&v)), &l); err != nil {
28
28
                return 0, os.NewSyscallError("getsockopt", err)
29
29
        }
30
30
        return int(v), nil
32
32
 
33
33
func setIPv6HopLimit(fd syscall.Handle, v int) error {
34
34
        vv := int32(v)
35
 
        return os.NewSyscallError("setsockopt", syscall.Setsockopt(fd, ianaProtocolIPv6, syscall.IPV6_UNICAST_HOPS, (*byte)(unsafe.Pointer(&vv)), 4))
 
35
        return os.NewSyscallError("setsockopt", syscall.Setsockopt(fd, ianaProtocolIPv6, sysSockoptUnicastHopLimit, (*byte)(unsafe.Pointer(&vv)), 4))
36
36
}
37
37
 
38
38
func ipv6Checksum(fd syscall.Handle) (bool, int, error) {
43
43
func ipv6MulticastHopLimit(fd syscall.Handle) (int, error) {
44
44
        var v int32
45
45
        l := int32(4)
46
 
        if err := syscall.Getsockopt(fd, ianaProtocolIPv6, syscall.IPV6_MULTICAST_HOPS, (*byte)(unsafe.Pointer(&v)), &l); err != nil {
 
46
        if err := syscall.Getsockopt(fd, ianaProtocolIPv6, sysSockoptMulticastHopLimit, (*byte)(unsafe.Pointer(&v)), &l); err != nil {
47
47
                return 0, os.NewSyscallError("getsockopt", err)
48
48
        }
49
49
        return int(v), nil
51
51
 
52
52
func setIPv6MulticastHopLimit(fd syscall.Handle, v int) error {
53
53
        vv := int32(v)
54
 
        return os.NewSyscallError("setsockopt", syscall.Setsockopt(fd, ianaProtocolIPv6, syscall.IPV6_MULTICAST_HOPS, (*byte)(unsafe.Pointer(&vv)), 4))
 
54
        return os.NewSyscallError("setsockopt", syscall.Setsockopt(fd, ianaProtocolIPv6, sysSockoptMulticastHopLimit, (*byte)(unsafe.Pointer(&vv)), 4))
55
55
}
56
56
 
57
57
func ipv6MulticastInterface(fd syscall.Handle) (*net.Interface, error) {
58
58
        var v int32
59
59
        l := int32(4)
60
 
        if err := syscall.Getsockopt(fd, ianaProtocolIPv6, syscall.IPV6_MULTICAST_IF, (*byte)(unsafe.Pointer(&v)), &l); err != nil {
 
60
        if err := syscall.Getsockopt(fd, ianaProtocolIPv6, sysSockoptMulticastInterface, (*byte)(unsafe.Pointer(&v)), &l); err != nil {
61
61
                return nil, os.NewSyscallError("getsockopt", err)
62
62
        }
63
63
        if v == 0 {
75
75
        if ifi != nil {
76
76
                v = int32(ifi.Index)
77
77
        }
78
 
        return os.NewSyscallError("setsockopt", syscall.Setsockopt(fd, ianaProtocolIPv6, syscall.IPV6_MULTICAST_IF, (*byte)(unsafe.Pointer(&v)), 4))
 
78
        return os.NewSyscallError("setsockopt", syscall.Setsockopt(fd, ianaProtocolIPv6, sysSockoptMulticastInterface, (*byte)(unsafe.Pointer(&v)), 4))
79
79
}
80
80
 
81
81
func ipv6MulticastLoopback(fd syscall.Handle) (bool, error) {
82
82
        var v int32
83
83
        l := int32(4)
84
 
        if err := syscall.Getsockopt(fd, ianaProtocolIPv6, syscall.IPV6_MULTICAST_LOOP, (*byte)(unsafe.Pointer(&v)), &l); err != nil {
 
84
        if err := syscall.Getsockopt(fd, ianaProtocolIPv6, sysSockoptMulticastLoopback, (*byte)(unsafe.Pointer(&v)), &l); err != nil {
85
85
                return false, os.NewSyscallError("getsockopt", err)
86
86
        }
87
87
        return v == 1, nil
89
89
 
90
90
func setIPv6MulticastLoopback(fd syscall.Handle, v bool) error {
91
91
        vv := int32(boolint(v))
92
 
        return os.NewSyscallError("setsockopt", syscall.Setsockopt(fd, ianaProtocolIPv6, syscall.IPV6_MULTICAST_LOOP, (*byte)(unsafe.Pointer(&vv)), 4))
 
92
        return os.NewSyscallError("setsockopt", syscall.Setsockopt(fd, ianaProtocolIPv6, sysSockoptMulticastLoopback, (*byte)(unsafe.Pointer(&vv)), 4))
93
93
}
94
94
 
95
95
func joinIPv6Group(fd syscall.Handle, ifi *net.Interface, grp net.IP) error {
96
 
        mreq := syscall.IPv6Mreq{}
97
 
        copy(mreq.Multiaddr[:], grp)
 
96
        mreq := sysMulticastReq{}
 
97
        copy(mreq.IP[:], grp)
98
98
        if ifi != nil {
99
 
                mreq.Interface = uint32(ifi.Index)
 
99
                mreq.IfIndex = uint32(ifi.Index)
100
100
        }
101
 
        return os.NewSyscallError("setsockopt", syscall.Setsockopt(fd, ianaProtocolIPv6, syscall.IPV6_JOIN_GROUP, (*byte)(unsafe.Pointer(&mreq)), int32(unsafe.Sizeof(mreq))))
 
101
        return os.NewSyscallError("setsockopt", syscall.Setsockopt(fd, ianaProtocolIPv6, sysSockoptJoinGroup, (*byte)(unsafe.Pointer(&mreq)), int32(sysSizeofMulticastReq)))
102
102
}
103
103
 
104
104
func leaveIPv6Group(fd syscall.Handle, ifi *net.Interface, grp net.IP) error {
105
 
        mreq := syscall.IPv6Mreq{}
106
 
        copy(mreq.Multiaddr[:], grp)
 
105
        mreq := sysMulticastReq{}
 
106
        copy(mreq.IP[:], grp)
107
107
        if ifi != nil {
108
 
                mreq.Interface = uint32(ifi.Index)
 
108
                mreq.IfIndex = uint32(ifi.Index)
109
109
        }
110
 
        return os.NewSyscallError("setsockopt", syscall.Setsockopt(fd, ianaProtocolIPv6, syscall.IPV6_LEAVE_GROUP, (*byte)(unsafe.Pointer(&mreq)), int32(unsafe.Sizeof(mreq))))
 
110
        return os.NewSyscallError("setsockopt", syscall.Setsockopt(fd, ianaProtocolIPv6, sysSockoptLeaveGroup, (*byte)(unsafe.Pointer(&mreq)), int32(sysSizeofMulticastReq)))
111
111
}
112
112
 
113
113
func setIPv6Checksum(fd syscall.Handle, on bool, offset int) error {