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 }