Files
cunicu/pkg/device/device.go
2022-10-07 18:30:50 +02:00

57 lines
932 B
Go

// Package device implements OS abstractions for managing WireGuard links
package device
import (
"net"
"os"
)
const (
RouteProtocol = 98
)
type Device interface {
Close() error
// Getter
Name() string
Index() int
MTU() int
// Setter
SetMTU(mtu int) error
SetUp() error
SetDown() error
AddAddress(ip net.IPNet) error
AddRoute(dst net.IPNet, table int) error
DeleteAddress(ip net.IPNet) error
DeleteRoute(dst net.IPNet, table int) error
}
func NewDevice(name string, user bool) (kernelDev Device, err error) {
if user {
kernelDev, err = NewUserDevice(name)
} else {
kernelDev, err = NewKernelDevice(name)
}
if err != nil {
return nil, err
}
return kernelDev, nil
}
func FindDevice(name string) (Device, error) {
if dev, err := FindUserDevice(name); err == nil {
return dev, nil
} else if dev, err := FindKernelDevice(name); err == nil {
return dev, nil
}
return nil, os.ErrNotExist
}