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
|
|
}
|