wgengine/router: take a link monitor

Prep for #1591 which will need to make Linux's router react to changes
that the link monitor observes.

The router package already depended on the monitor package
transitively. Now it's explicit.

Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
Brad Fitzpatrick
2021-07-20 13:28:06 -07:00
committed by Brad Fitzpatrick
parent 24db1a3c9b
commit ed8587f90d
11 changed files with 56 additions and 18 deletions

View File

@ -11,6 +11,7 @@ import (
"inet.af/netaddr"
"tailscale.com/types/logger"
"tailscale.com/types/preftype"
"tailscale.com/wgengine/monitor"
)
// Router is responsible for managing the system network stack.
@ -31,9 +32,12 @@ type Router interface {
// New returns a new Router for the current platform, using the
// provided tun device.
func New(logf logger.Logf, tundev tun.Device) (Router, error) {
//
// If linkMon is nil, it's not used. It's currently (2021-07-20) only
// used on Linux in some situations.
func New(logf logger.Logf, tundev tun.Device, linkMon *monitor.Mon) (Router, error) {
logf = logger.WithPrefix(logf, "router: ")
return newUserspaceRouter(logf, tundev)
return newUserspaceRouter(logf, tundev, linkMon)
}
// Cleanup restores the system network configuration to its original state