diff options
author | Paul Holzinger <pholzing@redhat.com> | 2021-09-02 10:11:05 +0200 |
---|---|---|
committer | Paul Holzinger <pholzing@redhat.com> | 2021-09-02 10:28:08 +0200 |
commit | ddeaaa47c89a00104c457554e0542d988f75e612 (patch) | |
tree | 6d1921211bd38c278a438ee9ec3892825c000762 | |
parent | 4207d959a68c1ee2b805b7113838580c14f4bbc6 (diff) | |
download | podman-ddeaaa47c89a00104c457554e0542d988f75e612.tar.gz podman-ddeaaa47c89a00104c457554e0542d988f75e612.tar.bz2 podman-ddeaaa47c89a00104c457554e0542d988f75e612.zip |
Drop dependency on iproute
We only use the `ip` util to remove a network interface. We can do
this directly via the netlink lib, no need to call a external binary.
[NO TESTS NEEDED]
Fixes #11403
Signed-off-by: Paul Holzinger <pholzing@redhat.com>
-rw-r--r-- | libpod/network/devices.go | 10 | ||||
-rw-r--r-- | libpod/network/network.go | 5 |
2 files changed, 6 insertions, 9 deletions
diff --git a/libpod/network/devices.go b/libpod/network/devices.go index de6bb4efc..fc9aff337 100644 --- a/libpod/network/devices.go +++ b/libpod/network/devices.go @@ -2,12 +2,11 @@ package network import ( "fmt" - "os/exec" "github.com/containers/common/pkg/config" "github.com/containers/podman/v3/pkg/util" - "github.com/containers/podman/v3/utils" "github.com/sirupsen/logrus" + "github.com/vishvananda/netlink" ) // GetFreeDeviceName returns a device name that is unused; used when no network @@ -52,12 +51,9 @@ func GetFreeDeviceName(config *config.Config) (string, error) { // RemoveInterface removes an interface by the given name func RemoveInterface(interfaceName string) error { - // Make sure we have the ip command on the system - ipPath, err := exec.LookPath("ip") + link, err := netlink.LinkByName(interfaceName) if err != nil { return err } - // Delete the network interface - _, err = utils.ExecCmd(ipPath, []string{"link", "del", interfaceName}...) - return err + return netlink.LinkDel(link) } diff --git a/libpod/network/network.go b/libpod/network/network.go index 805988432..3b81ce776 100644 --- a/libpod/network/network.go +++ b/libpod/network/network.go @@ -194,8 +194,9 @@ func removeNetwork(config *config.Config, name string) error { return errors.Wrapf(err, "failed to get live network names") } if util.StringInSlice(interfaceName, liveNetworkNames) { - if err := RemoveInterface(interfaceName); err != nil { - return errors.Wrapf(err, "failed to delete the network interface %q", interfaceName) + if err = RemoveInterface(interfaceName); err != nil { + // only log the error, it is not fatal + logrus.Infof("failed to remove network interface %s: %v", interfaceName, err) } } } |