github.com/sagernet/wireguard-go@v0.0.0-20231215174105-89dec3b2f3e8/conn/controlfns_unix.go (about) 1 //go:build !windows && !linux && !wasm 2 3 /* SPDX-License-Identifier: MIT 4 * 5 * Copyright (C) 2017-2023 WireGuard LLC. All Rights Reserved. 6 */ 7 8 package conn 9 10 import ( 11 "syscall" 12 13 "golang.org/x/sys/unix" 14 ) 15 16 func init() { 17 ControlFns = append(ControlFns, 18 func(network, address string, c syscall.RawConn) error { 19 return c.Control(func(fd uintptr) { 20 _ = unix.SetsockoptInt(int(fd), unix.SOL_SOCKET, unix.SO_RCVBUF, socketBufferSize) 21 _ = unix.SetsockoptInt(int(fd), unix.SOL_SOCKET, unix.SO_SNDBUF, socketBufferSize) 22 }) 23 }, 24 25 func(network, address string, c syscall.RawConn) error { 26 var err error 27 if network == "udp6" { 28 c.Control(func(fd uintptr) { 29 err = unix.SetsockoptInt(int(fd), unix.IPPROTO_IPV6, unix.IPV6_V6ONLY, 1) 30 }) 31 } 32 return err 33 }, 34 ) 35 }