forked from TrueCloudLab/multinet
38 lines
700 B
Go
38 lines
700 B
Go
package multinet
|
|
|
|
import "net"
|
|
|
|
// Interface provides information about net.Interface.
|
|
type Interface interface {
|
|
Name() string
|
|
Addrs() ([]net.Addr, error)
|
|
Down() bool
|
|
}
|
|
|
|
type netInterface struct {
|
|
iface net.Interface
|
|
}
|
|
|
|
func (i *netInterface) Name() string {
|
|
return i.iface.Name
|
|
}
|
|
|
|
func (i *netInterface) Addrs() ([]net.Addr, error) {
|
|
return i.iface.Addrs()
|
|
}
|
|
|
|
func (i *netInterface) Down() bool {
|
|
return i.iface.Flags&net.FlagUp == 0
|
|
}
|
|
|
|
func systemInterfaces() ([]Interface, error) {
|
|
ifaces, err := net.Interfaces()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
var result []Interface
|
|
for _, iface := range ifaces {
|
|
result = append(result, &netInterface{iface: iface})
|
|
}
|
|
return result, nil
|
|
}
|