mirror of
https://github.com/yggdrasil-network/water.git
synced 2025-05-19 16:35:10 +03:00
Initial FreeBSD/OpenBSD/NetBSD support (doesn't have syscalls for interface config yet)
This commit is contained in:
parent
8567d15277
commit
a31ac06cb2
4 changed files with 69 additions and 2 deletions
20
params_bsd.go
Normal file
20
params_bsd.go
Normal file
|
@ -0,0 +1,20 @@
|
|||
// +build openbsd freebsd netbsd
|
||||
|
||||
package water
|
||||
|
||||
// PlatformSpecificParams defines parameters in Config that are specific to
|
||||
// Linux. A zero-value of such type is valid, yielding an interface
|
||||
// with OS defined name.
|
||||
type PlatformSpecificParams struct {
|
||||
// Name is the name to be set for the interface to be created. This overrides
|
||||
// the default name assigned by OS such as tap0 or tun0. A zero-value of this
|
||||
// field, i.e. an empty string, indicates that the default name should be
|
||||
// used.
|
||||
Name string
|
||||
}
|
||||
|
||||
func defaultPlatformSpecificParams() PlatformSpecificParams {
|
||||
return PlatformSpecificParams{
|
||||
Name: "/dev/tap0",
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
// +build !linux,!darwin,!windows
|
||||
// +build !linux,!darwin,!windows,!freebsd,!netbsd,!openbsd
|
||||
|
||||
package water
|
||||
|
||||
|
|
47
syscalls_bsd.go
Normal file
47
syscalls_bsd.go
Normal file
|
@ -0,0 +1,47 @@
|
|||
// +build openbsd freebsd netbsd
|
||||
|
||||
package water
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"os"
|
||||
)
|
||||
|
||||
func openDev(config Config) (ifce *Interface, err error) {
|
||||
switch config.Name[:8] {
|
||||
case "/dev/tap":
|
||||
return newTAP(config)
|
||||
case "/dev/tun":
|
||||
return newTUN(config)
|
||||
default:
|
||||
return nil, errors.New("unrecognized driver")
|
||||
}
|
||||
}
|
||||
|
||||
func newTAP(config Config) (ifce *Interface, err error) {
|
||||
if config.Name[:8] != "/dev/tap" {
|
||||
panic("TUN/TAP name must be in format /dev/tunX or /dev/tapX")
|
||||
}
|
||||
|
||||
file, err := os.OpenFile(config.Name, os.O_RDWR, 0)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
ifce = &Interface{isTAP: true, ReadWriteCloser: file, name: config.Name[5:]}
|
||||
return
|
||||
}
|
||||
|
||||
func newTUN(config Config) (ifce *Interface, err error) {
|
||||
if config.Name[:8] != "/dev/tun" {
|
||||
panic("TUN/TAP name must be in format /dev/tunX or /dev/tapX")
|
||||
}
|
||||
|
||||
file, err := os.OpenFile(config.Name, os.O_RDWR, 0)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
ifce = &Interface{isTAP: false, ReadWriteCloser: file, name: config.Name[5:]}
|
||||
return
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
// +build !linux,!darwin,!windows
|
||||
// +build !linux,!darwin,!windows,!freebsd,!netbsd,!openbsd
|
||||
|
||||
package water
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue