Files
gluetun/internal/wireguard/userspaces.go
T

59 lines
1.7 KiB
Go

package wireguard
import (
amneziaconn "github.com/amnezia-vpn/amneziawg-go/conn"
amneziadevice "github.com/amnezia-vpn/amneziawg-go/device"
amneziatun "github.com/amnezia-vpn/amneziawg-go/tun"
wgconn "golang.zx2c4.com/wireguard/conn"
wgdevice "golang.zx2c4.com/wireguard/device"
wgtun "golang.zx2c4.com/wireguard/tun"
)
func defaultUserSpaceBackend() userSpaceBackend {
return userSpaceBackend{
createTun: func(name string, mtu int) (tunDevice, error) {
return wgtun.CreateTUN(name, mtu)
},
createBind: func() bind {
return wgconn.NewDefaultBind()
},
createDevice: func(td tunDevice, b bind, logger Logger) userspaceDevice {
wgtun, _ := td.(wgtun.Device)
wgBind, _ := b.(wgconn.Bind)
wgLogger := wgdevice.Logger{
Verbosef: logger.Debugf,
Errorf: logger.Errorf,
}
device := wgdevice.NewDevice(wgtun, wgBind, &wgLogger)
return device
},
preStart: nil,
}
}
func amneziaUserSpaceBackend() userSpaceBackend {
return userSpaceBackend{
createTun: func(name string, mtu int) (tunDevice, error) {
return amneziatun.CreateTUN(name, mtu)
},
createBind: func() bind {
return amneziaconn.NewDefaultBind()
},
createDevice: func(td tunDevice, b bind, logger Logger) userspaceDevice {
wgamneziaTun, _ := td.(amneziatun.Device)
wgamneziaBind, _ := b.(amneziaconn.Bind)
wgamneziaLogger := amneziadevice.Logger{
Verbosef: logger.Debugf,
Errorf: logger.Errorf,
}
device := amneziadevice.NewDevice(wgamneziaTun, wgamneziaBind, &wgamneziaLogger)
return device
},
preStart: func(ud userspaceDevice, s Settings) error {
uapiConfig := s.AmneziaWG.uapiConfig()
err := ud.IpcSet(uapiConfig)
return err
},
}
}