mirror of
https://github.com/qdm12/gluetun.git
synced 2026-05-06 20:10:11 +02:00
be92aa2ac4
- Existing option `WIREGUARD_MTU` , if set, disables PMTUD and is used - New option `PMTUD_ICMP_ADDRESSES=1.1.1.1,8.8.8.8` and `PMTUD_TCP_ADDRESSES=1.1.1.1:443,8.8.8.8:443` - ICMP PMTUD now targets external-by-default IP addresses - New TCP PMTUD (binary search only) as a second MTU confirmation and fallback mechanism. - Force set TCP MSS to MTU - IP header - TCP base header - "magic 20 bytes" 🎆 - Fix #3108
38 lines
1.0 KiB
Go
38 lines
1.0 KiB
Go
package tcp
|
|
|
|
import (
|
|
"syscall"
|
|
"time"
|
|
"unsafe"
|
|
|
|
"golang.org/x/sys/windows"
|
|
)
|
|
|
|
type fileDescriptor syscall.Handle
|
|
|
|
func sendTo(fd fileDescriptor, p []byte, flags int, to syscall.Sockaddr) (err error) {
|
|
return syscall.Sendto(syscall.Handle(fd), p, flags, to)
|
|
}
|
|
|
|
func setSocketTimeout(fd fileDescriptor, timeout time.Duration) (err error) {
|
|
timeval := int(timeout.Milliseconds())
|
|
return syscall.SetsockoptInt(syscall.Handle(fd), syscall.SOL_SOCKET, windows.SO_RCVTIMEO, timeval)
|
|
}
|
|
|
|
func recvFrom(fd fileDescriptor, p []byte, flags int) (n int, from syscall.Sockaddr, err error) {
|
|
return syscall.Recvfrom(syscall.Handle(fd), p, flags)
|
|
}
|
|
|
|
func setMTUDiscovery(fd syscall.Handle) error {
|
|
panic("not implemented")
|
|
}
|
|
|
|
func setNonBlock(fd syscall.Handle) error {
|
|
// Windows: Use ioctlsocket with FIONBIO
|
|
var arg uint32 = 1 // 1 to enable non-blocking mode
|
|
var bytesReturned uint32
|
|
const FIONBIO = 0x8004667e
|
|
return syscall.WSAIoctl(fd, FIONBIO, (*byte)(unsafe.Pointer(&arg)),
|
|
uint32(unsafe.Sizeof(arg)), nil, 0, &bytesReturned, nil, 0)
|
|
}
|