wgengine: properly clean up freebsd routes and interfaces on close
Signed-off-by: wardn <wardn@users.noreply.github.com>pull/106/head
parent
7a3be96199
commit
9390a3ef55
|
@ -35,6 +35,7 @@ func (t *fakeTun) File() *os.File {
|
||||||
func (t *fakeTun) Close() error {
|
func (t *fakeTun) Close() error {
|
||||||
close(t.closechan)
|
close(t.closechan)
|
||||||
close(t.datachan)
|
close(t.datachan)
|
||||||
|
close(t.evchan)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -55,6 +55,10 @@ func (r *freebsdRouter) Up() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *freebsdRouter) SetRoutes(rs RouteSettings) error {
|
func (r *freebsdRouter) SetRoutes(rs RouteSettings) error {
|
||||||
|
if rs.LocalAddr == (wgcfg.CIDR{}) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
var errq error
|
var errq error
|
||||||
|
|
||||||
// Update the address.
|
// Update the address.
|
||||||
|
@ -139,15 +143,6 @@ func (r *freebsdRouter) SetRoutes(rs RouteSettings) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *freebsdRouter) Close() 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
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -564,6 +564,7 @@ func (e *userspaceEngine) Close() {
|
||||||
e.wgdev.IpcSetOperation(r)
|
e.wgdev.IpcSetOperation(r)
|
||||||
e.linkMon.Close()
|
e.linkMon.Close()
|
||||||
e.router.Close()
|
e.router.Close()
|
||||||
|
e.wgdev.Close()
|
||||||
e.magicConn.Close()
|
e.magicConn.Close()
|
||||||
close(e.waitCh)
|
close(e.waitCh)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue