mirror of
https://github.com/containers/podman.git
synced 2026-03-12 19:59:41 -04:00
To prevent code duplication when creating new network backends move reusable code into a separate internal package. This allows all network backends to use the same code as long as they implement the new NetUtil interface. Signed-off-by: Paul Holzinger <pholzing@redhat.com>
35 lines
868 B
Go
35 lines
868 B
Go
package util
|
|
|
|
import "net"
|
|
|
|
// getLiveNetworkSubnets returns a slice of subnets representing what the system
|
|
// has defined as network interfaces
|
|
func getLiveNetworkSubnets() ([]*net.IPNet, error) {
|
|
addrs, err := net.InterfaceAddrs()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
nets := make([]*net.IPNet, 0, len(addrs))
|
|
for _, address := range addrs {
|
|
_, n, err := net.ParseCIDR(address.String())
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
nets = append(nets, n)
|
|
}
|
|
return nets, nil
|
|
}
|
|
|
|
// GetLiveNetworkNames returns a list of network interface names on the system
|
|
func GetLiveNetworkNames() ([]string, error) {
|
|
liveInterfaces, err := net.Interfaces()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
interfaceNames := make([]string, 0, len(liveInterfaces))
|
|
for _, i := range liveInterfaces {
|
|
interfaceNames = append(interfaceNames, i.Name)
|
|
}
|
|
return interfaceNames, nil
|
|
}
|