diff --git a/wgengine/faketun.go b/wgengine/faketun.go index 8bc04f81f..c063ed7aa 100644 --- a/wgengine/faketun.go +++ b/wgengine/faketun.go @@ -35,6 +35,7 @@ func (t *fakeTun) File() *os.File { func (t *fakeTun) Close() error { close(t.closechan) close(t.datachan) + close(t.evchan) return nil } diff --git a/wgengine/router_freebsd.go b/wgengine/router_freebsd.go index e4c696265..2841495f2 100644 --- a/wgengine/router_freebsd.go +++ b/wgengine/router_freebsd.go @@ -55,6 +55,10 @@ func (r *freebsdRouter) Up() error { } func (r *freebsdRouter) SetRoutes(rs RouteSettings) error { + if rs.LocalAddr == (wgcfg.CIDR{}) { + return nil + } + var errq error // Update the address. @@ -139,15 +143,6 @@ func (r *freebsdRouter) SetRoutes(rs RouteSettings) error { } func (r *freebsdRouter) Close() error { - out, err := cmd("ifconfig", r.tunname, "down").CombinedOutput() - if err != nil { - r.logf("running ifconfig failed: %v\n%s", err, out) - } - - if err := r.restoreResolvConf(); err != nil { - r.logf("failed to restore system resolv.conf: %v", err) - } - return nil } diff --git a/wgengine/userspace.go b/wgengine/userspace.go index c1535a736..42b89a5c9 100644 --- a/wgengine/userspace.go +++ b/wgengine/userspace.go @@ -564,6 +564,7 @@ func (e *userspaceEngine) Close() { e.wgdev.IpcSetOperation(r) e.linkMon.Close() e.router.Close() + e.wgdev.Close() e.magicConn.Close() close(e.waitCh) }