~hduran-8/+junk/caddy

« back to all changes in this revision

Viewing changes to debian/gocode/src/golang.org/x/net/ipv4/sys_darwin.go

  • Committer: Horacio Durán
  • Date: 2017-01-20 16:21:20 UTC
  • Revision ID: horacio.duran@canonical.com-20170120162120-l82mfqwmsclnk838
Upgrade to 0.9.4

Show diffs side-by-side

added added

removed removed

Lines of Context:
6
6
 
7
7
import (
8
8
        "net"
 
9
        "strconv"
 
10
        "strings"
9
11
        "syscall"
10
12
        "unsafe"
11
13
)
36
38
func init() {
37
39
        // Seems like kern.osreldate is veiled on latest OS X. We use
38
40
        // kern.osrelease instead.
39
 
        osver, err := syscall.Sysctl("kern.osrelease")
 
41
        s, err := syscall.Sysctl("kern.osrelease")
40
42
        if err != nil {
41
43
                return
42
44
        }
43
 
        var i int
44
 
        for i = range osver {
45
 
                if osver[i] == '.' {
46
 
                        break
47
 
                }
 
45
        ss := strings.Split(s, ".")
 
46
        if len(ss) == 0 {
 
47
                return
48
48
        }
49
49
        // The IP_PKTINFO and protocol-independent multicast API were
50
 
        // introduced in OS X 10.7 (Darwin 11.0.0). But it looks like
51
 
        // those features require OS X 10.8 (Darwin 12.0.0) and above.
 
50
        // introduced in OS X 10.7 (Darwin 11). But it looks like
 
51
        // those features require OS X 10.8 (Darwin 12) or above.
52
52
        // See http://support.apple.com/kb/HT1633.
53
 
        if i > 2 || i == 2 && osver[0] >= '1' && osver[1] >= '2' {
54
 
                ctlOpts[ctlPacketInfo].name = sysIP_PKTINFO
55
 
                ctlOpts[ctlPacketInfo].length = sizeofInetPktinfo
56
 
                ctlOpts[ctlPacketInfo].marshal = marshalPacketInfo
57
 
                ctlOpts[ctlPacketInfo].parse = parsePacketInfo
58
 
                sockOpts[ssoPacketInfo].name = sysIP_RECVPKTINFO
59
 
                sockOpts[ssoPacketInfo].typ = ssoTypeInt
60
 
                sockOpts[ssoMulticastInterface].typ = ssoTypeIPMreqn
61
 
                sockOpts[ssoJoinGroup].name = sysMCAST_JOIN_GROUP
62
 
                sockOpts[ssoJoinGroup].typ = ssoTypeGroupReq
63
 
                sockOpts[ssoLeaveGroup].name = sysMCAST_LEAVE_GROUP
64
 
                sockOpts[ssoLeaveGroup].typ = ssoTypeGroupReq
65
 
                sockOpts[ssoJoinSourceGroup].name = sysMCAST_JOIN_SOURCE_GROUP
66
 
                sockOpts[ssoJoinSourceGroup].typ = ssoTypeGroupSourceReq
67
 
                sockOpts[ssoLeaveSourceGroup].name = sysMCAST_LEAVE_SOURCE_GROUP
68
 
                sockOpts[ssoLeaveSourceGroup].typ = ssoTypeGroupSourceReq
69
 
                sockOpts[ssoBlockSourceGroup].name = sysMCAST_BLOCK_SOURCE
70
 
                sockOpts[ssoBlockSourceGroup].typ = ssoTypeGroupSourceReq
71
 
                sockOpts[ssoUnblockSourceGroup].name = sysMCAST_UNBLOCK_SOURCE
72
 
                sockOpts[ssoUnblockSourceGroup].typ = ssoTypeGroupSourceReq
 
53
        if mjver, err := strconv.Atoi(ss[0]); err != nil || mjver < 12 {
 
54
                return
73
55
        }
 
56
        ctlOpts[ctlPacketInfo].name = sysIP_PKTINFO
 
57
        ctlOpts[ctlPacketInfo].length = sizeofInetPktinfo
 
58
        ctlOpts[ctlPacketInfo].marshal = marshalPacketInfo
 
59
        ctlOpts[ctlPacketInfo].parse = parsePacketInfo
 
60
        sockOpts[ssoPacketInfo].name = sysIP_RECVPKTINFO
 
61
        sockOpts[ssoPacketInfo].typ = ssoTypeInt
 
62
        sockOpts[ssoMulticastInterface].typ = ssoTypeIPMreqn
 
63
        sockOpts[ssoJoinGroup].name = sysMCAST_JOIN_GROUP
 
64
        sockOpts[ssoJoinGroup].typ = ssoTypeGroupReq
 
65
        sockOpts[ssoLeaveGroup].name = sysMCAST_LEAVE_GROUP
 
66
        sockOpts[ssoLeaveGroup].typ = ssoTypeGroupReq
 
67
        sockOpts[ssoJoinSourceGroup].name = sysMCAST_JOIN_SOURCE_GROUP
 
68
        sockOpts[ssoJoinSourceGroup].typ = ssoTypeGroupSourceReq
 
69
        sockOpts[ssoLeaveSourceGroup].name = sysMCAST_LEAVE_SOURCE_GROUP
 
70
        sockOpts[ssoLeaveSourceGroup].typ = ssoTypeGroupSourceReq
 
71
        sockOpts[ssoBlockSourceGroup].name = sysMCAST_BLOCK_SOURCE
 
72
        sockOpts[ssoBlockSourceGroup].typ = ssoTypeGroupSourceReq
 
73
        sockOpts[ssoUnblockSourceGroup].name = sysMCAST_UNBLOCK_SOURCE
 
74
        sockOpts[ssoUnblockSourceGroup].typ = ssoTypeGroupSourceReq
74
75
}
75
76
 
76
77
func (pi *inetPktinfo) setIfindex(i int) {