mirror of
https://codeberg.org/cunicu/cunicu.git
synced 2025-12-24 06:18:40 +08:00
56 lines
831 B
Go
56 lines
831 B
Go
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) error
|
|
|
|
DeleteAddress(ip *net.IPNet) error
|
|
DeleteRoute(dst *net.IPNet) 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
|
|
}
|
|
|
|
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
|
|
}
|