sys_linux.go 1.0 KB

12345678910111213141516171819202122232425262728293031
  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. package ipv4
  5. type sysSockoptLen int32
  6. var (
  7. ctlOpts = [ctlMax]ctlOpt{
  8. ctlTTL: {sysIP_TTL, 1, marshalTTL, parseTTL},
  9. ctlPacketInfo: {sysIP_PKTINFO, sysSizeofInetPktinfo, marshalPacketInfo, parsePacketInfo},
  10. }
  11. sockOpts = [ssoMax]sockOpt{
  12. ssoTOS: {sysIP_TOS, ssoTypeInt},
  13. ssoTTL: {sysIP_TTL, ssoTypeInt},
  14. ssoMulticastTTL: {sysIP_MULTICAST_TTL, ssoTypeInt},
  15. ssoMulticastInterface: {sysIP_MULTICAST_IF, ssoTypeIPMreqn},
  16. ssoMulticastLoopback: {sysIP_MULTICAST_LOOP, ssoTypeInt},
  17. ssoReceiveTTL: {sysIP_RECVTTL, ssoTypeInt},
  18. ssoPacketInfo: {sysIP_PKTINFO, ssoTypeInt},
  19. ssoHeaderPrepend: {sysIP_HDRINCL, ssoTypeInt},
  20. ssoJoinGroup: {sysIP_ADD_MEMBERSHIP, ssoTypeIPMreqn},
  21. ssoLeaveGroup: {sysIP_DROP_MEMBERSHIP, ssoTypeIPMreqn},
  22. }
  23. )
  24. func (pi *sysInetPktinfo) setIfindex(i int) {
  25. pi.Ifindex = int32(i)
  26. }