gtsocial-umbx

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

sys_windows.go (1607B)


      1 // Copyright 2014 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 package ipv4
      6 
      7 import (
      8 	"golang.org/x/net/internal/iana"
      9 	"golang.org/x/net/internal/socket"
     10 
     11 	"golang.org/x/sys/windows"
     12 )
     13 
     14 const (
     15 	sizeofIPMreq       = 0x8
     16 	sizeofIPMreqSource = 0xc
     17 )
     18 
     19 type ipMreq struct {
     20 	Multiaddr [4]byte
     21 	Interface [4]byte
     22 }
     23 
     24 type ipMreqSource struct {
     25 	Multiaddr  [4]byte
     26 	Sourceaddr [4]byte
     27 	Interface  [4]byte
     28 }
     29 
     30 // See http://msdn.microsoft.com/en-us/library/windows/desktop/ms738586(v=vs.85).aspx
     31 var (
     32 	ctlOpts = [ctlMax]ctlOpt{}
     33 
     34 	sockOpts = map[int]*sockOpt{
     35 		ssoTOS:                {Option: socket.Option{Level: iana.ProtocolIP, Name: windows.IP_TOS, Len: 4}},
     36 		ssoTTL:                {Option: socket.Option{Level: iana.ProtocolIP, Name: windows.IP_TTL, Len: 4}},
     37 		ssoMulticastTTL:       {Option: socket.Option{Level: iana.ProtocolIP, Name: windows.IP_MULTICAST_TTL, Len: 4}},
     38 		ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: windows.IP_MULTICAST_IF, Len: 4}},
     39 		ssoMulticastLoopback:  {Option: socket.Option{Level: iana.ProtocolIP, Name: windows.IP_MULTICAST_LOOP, Len: 4}},
     40 		ssoHeaderPrepend:      {Option: socket.Option{Level: iana.ProtocolIP, Name: windows.IP_HDRINCL, Len: 4}},
     41 		ssoJoinGroup:          {Option: socket.Option{Level: iana.ProtocolIP, Name: windows.IP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq},
     42 		ssoLeaveGroup:         {Option: socket.Option{Level: iana.ProtocolIP, Name: windows.IP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq},
     43 	}
     44 )