Merge branch 'develop' into future

This commit is contained in:
Neil 2023-09-03 12:58:55 +01:00 committed by GitHub
commit 6ab0639b82
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 94 additions and 8 deletions

View file

@ -1,5 +1,5 @@
//go:build !mobile
// +build !mobile
//go:build darwin || ios
// +build darwin ios
package tun
@ -7,6 +7,7 @@ package tun
import (
"encoding/binary"
"os"
"strconv"
"strings"
"unsafe"
@ -34,6 +35,31 @@ func (tun *TunAdapter) setup(ifname string, addr string, mtu uint64) error {
return tun.setupAddress(addr)
}
// Configures the "utun" adapter from an existing file descriptor.
func (tun *TunAdapter) setupFD(fd int32, addr string, mtu uint64) error {
dfd, err := unix.Dup(int(fd))
if err != nil {
return err
}
err = unix.SetNonblock(dfd, true)
if err != nil {
unix.Close(dfd)
return err
}
iface, err := wgtun.CreateTUNFromFile(os.NewFile(uintptr(dfd), "/dev/tun"), 0)
if err != nil {
unix.Close(dfd)
return err
}
tun.iface = iface
if m, err := iface.MTU(); err == nil {
tun.mtu = getSupportedMTU(uint64(m))
} else {
tun.mtu = 0
}
return nil // tun.setupAddress(addr)
}
const (
darwin_SIOCAIFADDR_IN6 = 2155899162 // netinet6/in6_var.h
darwin_IN6_IFF_NODAD = 0x0020 // netinet6/in6_var.h