wgengine: pass tun.NativeDevice to router

Signed-off-by: Dmytro Shynkevych <dmytro@tailscale.com>
This commit is contained in:
Dmytro Shynkevych 2020-05-15 03:06:30 -04:00 committed by Dmytro Shynkevych
parent 9c914dc7dd
commit 635f7b99f1
2 changed files with 8 additions and 1 deletions

View File

@ -262,3 +262,8 @@ func (t *TUN) InjectOutbound(packet []byte) error {
return nil
}
}
// Unwrap returns the underlying TUN device.
func (t *TUN) Unwrap() tun.Device {
return t.tdev
}

View File

@ -206,7 +206,9 @@ func newUserspaceEngineAdvanced(logf logger.Logf, tundev *tstun.TUN, routerGen R
}
}()
e.router, err = routerGen(logf, e.wgdev, e.tundev)
// Pass the underlying tun.(*NativeDevice) to the router:
// routers do not Read or Write, but do access native interfaces.
e.router, err = routerGen(logf, e.wgdev, e.tundev.Unwrap())
if err != nil {
return nil, err
}