| 123456789101112131415161718192021222324252627282930313233 |
- /* SPDX-License-Identifier: MIT
- *
- * Copyright (C) 2017-2023 WireGuard LLC. All Rights Reserved.
- */
- package conn
- import (
- "fmt"
- "net"
- "golang.org/x/sys/unix"
- )
- func supportsUDPOffload(conn *net.UDPConn) (txOffload, rxOffload bool) {
- rc, err := conn.SyscallConn()
- if err != nil {
- return
- }
- a := 0
- err = rc.Control(func(fd uintptr) {
- a, err = unix.GetsockoptInt(int(fd), unix.IPPROTO_UDP, unix.UDP_SEGMENT)
- txOffload = err == nil
- opt, errSyscall := unix.GetsockoptInt(int(fd), unix.IPPROTO_UDP, unix.UDP_GRO)
- rxOffload = errSyscall == nil && opt == 1
- })
- fmt.Printf("%d", a)
- if err != nil {
- return false, false
- }
- return txOffload, rxOffload
- }
|