Skip to content

Commit

Permalink
Drop dependency on iproute
Browse files Browse the repository at this point in the history
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 containers#11403

Signed-off-by: Paul Holzinger <[email protected]>
  • Loading branch information
Luap99 committed Sep 2, 2021
1 parent 4207d95 commit ddeaaa4
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 9 deletions.
10 changes: 3 additions & 7 deletions libpod/network/devices.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)
}
5 changes: 3 additions & 2 deletions libpod/network/network.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
}
}
Expand Down

0 comments on commit ddeaaa4

Please sign in to comment.