// Copyright (c) Tailscale Inc & AUTHORS // SPDX-License-Identifier: BSD-3-Clause //go:build linux && !android package magicsock import ( "net" "syscall" "tailscale.com/types/nettype" ) func setDontFragment(pconn nettype.PacketConn, network string) (err error) { if c, ok := pconn.(*net.UDPConn); ok { rc, err := c.SyscallConn() if err == nil { rc.Control(func(fd uintptr) { if network == "udp4" { err = syscall.SetsockoptInt(int(fd), syscall.IPPROTO_IP, syscall.IP_MTU_DISCOVER, syscall.IP_PMTUDISC_DO) } if network == "udp6" { err = syscall.SetsockoptInt(int(fd), syscall.IPPROTO_IPV6, syscall.IP_MTU_DISCOVER, syscall.IP_PMTUDISC_DO) } }) } } return err } func CanPMTUD() bool { return debugPMTUD() // only if the envknob is enabled, for now. }