fix(wireguard): delete existing Wireguard link before adding it

This commit is contained in:
Quentin McGaw
2023-06-10 20:23:21 +00:00
parent 4a0f9c36ba
commit 4292a500ae

View File

@@ -168,6 +168,23 @@ func setupKernelSpace(ctx context.Context,
Name: interfaceName,
MTU: mtu,
}
links, err := netLinker.LinkList()
if err != nil {
return link, nil, fmt.Errorf("listing links: %w", err)
}
// Cleanup any previous Wireguard interface with the same name
// See https://github.com/qdm12/gluetun/issues/1669
for _, link := range links {
if link.Type == "wireguard" && link.Name == interfaceName {
err = netLinker.LinkDel(link)
if err != nil {
return link, nil, fmt.Errorf("deleting previous Wireguard link %s: %w",
interfaceName, err)
}
}
}
linkIndex, err := netLinker.LinkAdd(link)
if err != nil {
return link, nil, fmt.Errorf("%w: %s", ErrAddLink, err)