package utils import ( "net" "syscall" ) func SetDontFragment(conn *net.UDPConn) error { rawConn, err := conn.SyscallConn() if err != nil { return err } var err1, err2 error err1 = rawConn.Control(func(fd uintptr) { // https://docs.microsoft.com/en-us/troubleshoot/windows/win32/header-library-requirement-socket-ipproto-ip // #define IP_DONTFRAGMENT 14 /* don't fragment IP datagrams */ err2 = syscall.SetsockoptInt(syscall.Handle(fd), syscall.IPPROTO_IP, 14, 1) }) if err1 != nil { return err1 } return err2 }