fix(wireguard): delete existing Wireguard link before adding it
This commit is contained in:
@@ -168,6 +168,23 @@ func setupKernelSpace(ctx context.Context,
|
|||||||
Name: interfaceName,
|
Name: interfaceName,
|
||||||
MTU: mtu,
|
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)
|
linkIndex, err := netLinker.LinkAdd(link)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return link, nil, fmt.Errorf("%w: %s", ErrAddLink, err)
|
return link, nil, fmt.Errorf("%w: %s", ErrAddLink, err)
|
||||||
|
|||||||
Reference in New Issue
Block a user