From 3c4b0b3a4b2f22824db7870ac812d12e63471810 Mon Sep 17 00:00:00 2001 From: braginini Date: Thu, 26 Aug 2021 18:04:19 +0200 Subject: [PATCH] fix: remove existing wiretrustee interface if existed --- iface/iface_linux.go | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) 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 {