//go:build linux

package quic

import (
	
	

	

	
)

func setDF( syscall.RawConn) (bool, error) {
	// Enabling IP_MTU_DISCOVER will force the kernel to return "sendto: message too long"
	// and the datagram will not be fragmented
	var ,  error
	if  := .Control(func( uintptr) {
		 = unix.SetsockoptInt(int(), unix.IPPROTO_IP, unix.IP_MTU_DISCOVER, unix.IP_PMTUDISC_PROBE)
		 = unix.SetsockoptInt(int(), unix.IPPROTO_IPV6, unix.IPV6_MTU_DISCOVER, unix.IPV6_PMTUDISC_PROBE)
	});  != nil {
		return false, 
	}
	switch {
	case  == nil &&  == nil:
		utils.DefaultLogger.Debugf("Setting DF for IPv4 and IPv6.")
	case  == nil &&  != nil:
		utils.DefaultLogger.Debugf("Setting DF for IPv4.")
	case  != nil &&  == nil:
		utils.DefaultLogger.Debugf("Setting DF for IPv6.")
	case  != nil &&  != nil:
		return false, errors.New("setting DF failed for both IPv4 and IPv6")
	}
	return true, nil
}

func isSendMsgSizeErr( error) bool {
	// https://man7.org/linux/man-pages/man7/udp.7.html
	return errors.Is(, unix.EMSGSIZE)
}

func isRecvMsgSizeErr(error) bool { return false }