tun: match windows CreateTUN signature to the Linux variant

Signed-off-by: Avery Pennarun <apenwarr@gmail.com>
[zx2c4: fix default value]
This commit is contained in:
Avery Pennarun 2019-04-20 03:28:06 -04:00 committed by Jason A. Donenfeld
parent 0abb6b668c
commit 1b6c8ddbe8
2 changed files with 10 additions and 5 deletions

View file

@ -37,7 +37,7 @@ func main() {
logger.Info.Println("Starting wireguard-go version", device.WireGuardGoVersion) logger.Info.Println("Starting wireguard-go version", device.WireGuardGoVersion)
logger.Debug.Println("Debug log enabled") logger.Debug.Println("Debug log enabled")
tun, err := tun.CreateTUN(interfaceName) tun, err := tun.CreateTUN(interfaceName, 0)
if err == nil { if err == nil {
realInterfaceName, err2 := tun.Name() realInterfaceName, err2 := tun.Name()
if err2 == nil { if err2 == nil {

View file

@ -54,15 +54,15 @@ func nanotime() int64
// CreateTUN creates a Wintun interface with the given name. Should a Wintun // CreateTUN creates a Wintun interface with the given name. Should a Wintun
// interface with the same name exist, it is reused. // interface with the same name exist, it is reused.
// //
func CreateTUN(ifname string) (Device, error) { func CreateTUN(ifname string, mtu int) (Device, error) {
return CreateTUNWithRequestedGUID(ifname, nil) return CreateTUNWithRequestedGUID(ifname, nil, mtu)
} }
// //
// CreateTUNWithRequestedGUID creates a Wintun interface with the given name and // CreateTUNWithRequestedGUID creates a Wintun interface with the given name and
// a requested GUID. Should a Wintun interface with the same name exist, it is reused. // a requested GUID. Should a Wintun interface with the same name exist, it is reused.
// //
func CreateTUNWithRequestedGUID(ifname string, requestedGUID *windows.GUID) (Device, error) { func CreateTUNWithRequestedGUID(ifname string, requestedGUID *windows.GUID, mtu int) (Device, error) {
var err error var err error
var wt *wintun.Interface var wt *wintun.Interface
@ -80,12 +80,17 @@ func CreateTUNWithRequestedGUID(ifname string, requestedGUID *windows.GUID) (Dev
return nil, fmt.Errorf("Error creating interface: %v", err) return nil, fmt.Errorf("Error creating interface: %v", err)
} }
forcedMTU := 1420
if mtu > 0 {
forcedMTU = mtu
}
tun := &NativeTun{ tun := &NativeTun{
wt: wt, wt: wt,
handle: windows.InvalidHandle, handle: windows.InvalidHandle,
events: make(chan Event, 10), events: make(chan Event, 10),
errors: make(chan error, 1), errors: make(chan error, 1),
forcedMTU: 1500, forcedMTU: forcedMTU,
} }
err = tun.rings.Init() err = tun.rings.Init()