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) {
		err2 = syscall.SetsockoptInt(int(fd), syscall.IPPROTO_IP, syscall.IP_MTU_DISCOVER, syscall.IP_PMTUDISC_PROBE)
	})
	if err1 != nil {
		return err1
	}
	return err2
}