diff --git a/iface/iface_linux.go b/iface/iface_linux.go index 2cb3af72f..f2c0300e3 100644 --- a/iface/iface_linux.go +++ b/iface/iface_linux.go @@ -30,8 +30,27 @@ func CreateWithKernel(iface string, address string) error { attrs: &attrs, } + // check if interface exists + l, err := netlink.LinkByName(WgInterfaceDefault) + if err != nil { + switch err.(type) { + case netlink.LinkNotFoundError: + break + default: + return err + } + } + + // remove if interface exists + if l != nil { + err = netlink.LinkDel(&link) + if err != nil { + return err + } + } + log.Debugf("adding device: %s", iface) - err := netlink.LinkAdd(&link) + err = netlink.LinkAdd(&link) if os.IsExist(err) { log.Infof("interface %s already exists. Will reuse.", iface) } else if err != nil {