operateonfd.go raw
1 //go:build darwin || freebsd
2
3 /* SPDX-License-Identifier: MIT
4 *
5 * Copyright (C) 2017-2025 WireGuard LLC. All Rights Reserved.
6 */
7
8 package tun
9
10 import (
11 "fmt"
12 )
13
14 func (tun *NativeTun) operateOnFd(fn func(fd uintptr)) {
15 sysconn, err := tun.tunFile.SyscallConn()
16 if err != nil {
17 tun.errors <- fmt.Errorf("unable to find sysconn for tunfile: %s", err.Error())
18 return
19 }
20 err = sysconn.Control(fn)
21 if err != nil {
22 tun.errors <- fmt.Errorf("unable to control sysconn for tunfile: %s", err.Error())
23 }
24 }
25