github.com/graybobo/golang.org-package-offline-cache@v0.0.0-20200626051047-6608995c132f/x/net/ipv4/sys_windows.go (about) 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 const ( 8 // See ws2tcpip.h. 9 sysIP_OPTIONS = 0x1 10 sysIP_HDRINCL = 0x2 11 sysIP_TOS = 0x3 12 sysIP_TTL = 0x4 13 sysIP_MULTICAST_IF = 0x9 14 sysIP_MULTICAST_TTL = 0xa 15 sysIP_MULTICAST_LOOP = 0xb 16 sysIP_ADD_MEMBERSHIP = 0xc 17 sysIP_DROP_MEMBERSHIP = 0xd 18 sysIP_DONTFRAGMENT = 0xe 19 sysIP_ADD_SOURCE_MEMBERSHIP = 0xf 20 sysIP_DROP_SOURCE_MEMBERSHIP = 0x10 21 sysIP_PKTINFO = 0x13 22 23 sysSizeofInetPktinfo = 0x8 24 sysSizeofIPMreq = 0x8 25 sysSizeofIPMreqSource = 0xc 26 ) 27 28 type sysInetPktinfo struct { 29 Addr [4]byte 30 Ifindex int32 31 } 32 33 type sysIPMreq struct { 34 Multiaddr [4]byte 35 Interface [4]byte 36 } 37 38 type sysIPMreqSource struct { 39 Multiaddr [4]byte 40 Sourceaddr [4]byte 41 Interface [4]byte 42 } 43 44 // See http://msdn.microsoft.com/en-us/library/windows/desktop/ms738586(v=vs.85).aspx 45 var ( 46 ctlOpts = [ctlMax]ctlOpt{} 47 48 sockOpts = [ssoMax]sockOpt{ 49 ssoTOS: {sysIP_TOS, ssoTypeInt}, 50 ssoTTL: {sysIP_TTL, ssoTypeInt}, 51 ssoMulticastTTL: {sysIP_MULTICAST_TTL, ssoTypeInt}, 52 ssoMulticastInterface: {sysIP_MULTICAST_IF, ssoTypeInterface}, 53 ssoMulticastLoopback: {sysIP_MULTICAST_LOOP, ssoTypeInt}, 54 ssoJoinGroup: {sysIP_ADD_MEMBERSHIP, ssoTypeIPMreq}, 55 ssoLeaveGroup: {sysIP_DROP_MEMBERSHIP, ssoTypeIPMreq}, 56 } 57 ) 58 59 func (pi *sysInetPktinfo) setIfindex(i int) { 60 pi.Ifindex = int32(i) 61 }