mirror of
https://git.zx2c4.com/wireguard-go
synced 2024-11-15 01:05:15 +01:00
A bit more messing with tun_dragonfly
This commit is contained in:
parent
de4c43207b
commit
e3eae3bc01
@ -23,6 +23,8 @@ import (
|
|||||||
const _TUNSIFHEAD = 0x80047460
|
const _TUNSIFHEAD = 0x80047460
|
||||||
const _TUNSIFMODE = 0x8004745e
|
const _TUNSIFMODE = 0x8004745e
|
||||||
const _TUNSIFPID = 0x2000745f
|
const _TUNSIFPID = 0x2000745f
|
||||||
|
const _FIONBIO = 0x8004667e
|
||||||
|
const _FIOASYNC = 0x8004667d
|
||||||
|
|
||||||
// Iface status string max len
|
// Iface status string max len
|
||||||
const _IFSTATMAX = 800
|
const _IFSTATMAX = 800
|
||||||
@ -269,9 +271,19 @@ func CreateTUN(name string, mtu int) (TUNDevice, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var errno syscall.Errno;
|
||||||
|
|
||||||
|
ifbiomode := 1
|
||||||
|
_, _, errno = unix.Syscall(
|
||||||
|
unix.SYS_IOCTL,
|
||||||
|
uintptr(tunfd),
|
||||||
|
uintptr(_FIOASYNC),
|
||||||
|
uintptr(unsafe.Pointer(&ifbiomode)),
|
||||||
|
)
|
||||||
|
|
||||||
// Enable ifhead mode, otherwise tun will complain if it gets a non-AF_INET packet
|
// Enable ifhead mode, otherwise tun will complain if it gets a non-AF_INET packet
|
||||||
ifheadmode := 1
|
ifheadmode := 1
|
||||||
_, _, errno := unix.Syscall(
|
_, _, errno = unix.Syscall(
|
||||||
unix.SYS_IOCTL,
|
unix.SYS_IOCTL,
|
||||||
uintptr(tunfd),
|
uintptr(tunfd),
|
||||||
uintptr(_TUNSIFHEAD),
|
uintptr(_TUNSIFHEAD),
|
||||||
@ -390,7 +402,7 @@ func (tun *nativeTun) doRead(buff []byte, offset int) (int, error) {
|
|||||||
default:
|
default:
|
||||||
buff := buff[offset-4:]
|
buff := buff[offset-4:]
|
||||||
n, err := tun.fd.Read(buff[:])
|
n, err := tun.fd.Read(buff[:])
|
||||||
if n < 4 {
|
if n < 4 && n > 0{
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
return n - 4, err
|
return n - 4, err
|
||||||
|
Loading…
Reference in New Issue
Block a user