~nskaggs/+junk/xenial-test

« back to all changes in this revision

Viewing changes to src/golang.org/x/net/ipv6/sys_bsd.go

  • Committer: Nicholas Skaggs
  • Date: 2016-10-24 20:56:05 UTC
  • Revision ID: nicholas.skaggs@canonical.com-20161024205605-z8lta0uvuhtxwzwl
Initi with beta15

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright 2013 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 dragonfly netbsd openbsd
 
6
 
 
7
package ipv6
 
8
 
 
9
import (
 
10
        "net"
 
11
        "syscall"
 
12
 
 
13
        "golang.org/x/net/internal/iana"
 
14
)
 
15
 
 
16
type sysSockoptLen int32
 
17
 
 
18
var (
 
19
        ctlOpts = [ctlMax]ctlOpt{
 
20
                ctlTrafficClass: {sysIPV6_TCLASS, 4, marshalTrafficClass, parseTrafficClass},
 
21
                ctlHopLimit:     {sysIPV6_HOPLIMIT, 4, marshalHopLimit, parseHopLimit},
 
22
                ctlPacketInfo:   {sysIPV6_PKTINFO, sysSizeofInet6Pktinfo, marshalPacketInfo, parsePacketInfo},
 
23
                ctlNextHop:      {sysIPV6_NEXTHOP, sysSizeofSockaddrInet6, marshalNextHop, parseNextHop},
 
24
                ctlPathMTU:      {sysIPV6_PATHMTU, sysSizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU},
 
25
        }
 
26
 
 
27
        sockOpts = [ssoMax]sockOpt{
 
28
                ssoTrafficClass:        {iana.ProtocolIPv6, sysIPV6_TCLASS, ssoTypeInt},
 
29
                ssoHopLimit:            {iana.ProtocolIPv6, sysIPV6_UNICAST_HOPS, ssoTypeInt},
 
30
                ssoMulticastInterface:  {iana.ProtocolIPv6, sysIPV6_MULTICAST_IF, ssoTypeInterface},
 
31
                ssoMulticastHopLimit:   {iana.ProtocolIPv6, sysIPV6_MULTICAST_HOPS, ssoTypeInt},
 
32
                ssoMulticastLoopback:   {iana.ProtocolIPv6, sysIPV6_MULTICAST_LOOP, ssoTypeInt},
 
33
                ssoReceiveTrafficClass: {iana.ProtocolIPv6, sysIPV6_RECVTCLASS, ssoTypeInt},
 
34
                ssoReceiveHopLimit:     {iana.ProtocolIPv6, sysIPV6_RECVHOPLIMIT, ssoTypeInt},
 
35
                ssoReceivePacketInfo:   {iana.ProtocolIPv6, sysIPV6_RECVPKTINFO, ssoTypeInt},
 
36
                ssoReceivePathMTU:      {iana.ProtocolIPv6, sysIPV6_RECVPATHMTU, ssoTypeInt},
 
37
                ssoPathMTU:             {iana.ProtocolIPv6, sysIPV6_PATHMTU, ssoTypeMTUInfo},
 
38
                ssoChecksum:            {iana.ProtocolIPv6, sysIPV6_CHECKSUM, ssoTypeInt},
 
39
                ssoICMPFilter:          {iana.ProtocolIPv6ICMP, sysICMP6_FILTER, ssoTypeICMPFilter},
 
40
                ssoJoinGroup:           {iana.ProtocolIPv6, sysIPV6_JOIN_GROUP, ssoTypeIPMreq},
 
41
                ssoLeaveGroup:          {iana.ProtocolIPv6, sysIPV6_LEAVE_GROUP, ssoTypeIPMreq},
 
42
        }
 
43
)
 
44
 
 
45
func (sa *sysSockaddrInet6) setSockaddr(ip net.IP, i int) {
 
46
        sa.Len = sysSizeofSockaddrInet6
 
47
        sa.Family = syscall.AF_INET6
 
48
        copy(sa.Addr[:], ip)
 
49
        sa.Scope_id = uint32(i)
 
50
}
 
51
 
 
52
func (pi *sysInet6Pktinfo) setIfindex(i int) {
 
53
        pi.Ifindex = uint32(i)
 
54
}
 
55
 
 
56
func (mreq *sysIPv6Mreq) setIfindex(i int) {
 
57
        mreq.Interface = uint32(i)
 
58
}