summaryrefslogtreecommitdiffstats
path: root/tun/tun_freebsd.go
diff options
context:
space:
mode:
Diffstat (limited to 'tun/tun_freebsd.go')
-rw-r--r--tun/tun_freebsd.go17
1 files changed, 17 insertions, 0 deletions
diff --git a/tun/tun_freebsd.go b/tun/tun_freebsd.go
index 1883aad..c2ad65f 100644
--- a/tun/tun_freebsd.go
+++ b/tun/tun_freebsd.go
@@ -292,6 +292,23 @@ func CreateTUN(name string, mtu int) (Device, error) {
return nil, fmt.Errorf("Unable to put into IFHEAD mode: %w", errno)
}
+ // Get out of PPP mode.
+ ifflags := syscall.IFF_BROADCAST
+ tun.operateOnFd(func(fd uintptr) {
+ _, _, errno = unix.Syscall(
+ unix.SYS_IOCTL,
+ fd,
+ uintptr(_TUNSIFMODE),
+ uintptr(unsafe.Pointer(&ifflags)),
+ )
+ })
+
+ if errno != 0 {
+ tunFile.Close()
+ tunDestroy(assignedName)
+ return nil, fmt.Errorf("Unable to put into IFF_BROADCAST mode: %w", errno)
+ }
+
// Open control sockets
confd, err := unix.Socket(
unix.AF_INET,