mirror of
https://github.com/anyproto/anytype-heart.git
synced 2025-06-10 01:51:07 +09:00
47 lines
991 B
Go
47 lines
991 B
Go
//go:build !android
|
|
// +build !android
|
|
|
|
package addrs
|
|
|
|
import (
|
|
"net"
|
|
"slices"
|
|
|
|
"github.com/anyproto/anytype-heart/util/slice"
|
|
)
|
|
|
|
func SetInterfaceAddrsGetter(getter InterfaceAddrsGetter) {}
|
|
|
|
func SetInterfaceGetter(getter InterfaceGetter) {}
|
|
|
|
type InterfaceGetter interface {
|
|
Interfaces() []Interface
|
|
}
|
|
|
|
type InterfaceAddrsGetter interface {
|
|
InterfaceAddrs() []InterfaceAddr
|
|
}
|
|
|
|
func GetInterfacesAddrs() (iAddrs InterfacesAddrs, err error) {
|
|
addrs, err := net.InterfaceAddrs()
|
|
if err != nil {
|
|
return
|
|
}
|
|
iAddrs.Addrs = addrs
|
|
ifaces, err := net.Interfaces()
|
|
if err != nil {
|
|
return
|
|
}
|
|
iAddrs.Interfaces = ifaces
|
|
|
|
iAddrs.Interfaces = slice.Filter(iAddrs.Interfaces, func(iface net.Interface) bool {
|
|
return iface.Flags&net.FlagUp != 0 && iface.Flags&net.FlagMulticast != 0
|
|
})
|
|
return
|
|
}
|
|
|
|
func IsLoopBack(interfaces []net.Interface) bool {
|
|
return len(interfaces) == 1 && slices.ContainsFunc(interfaces, func(n net.Interface) bool {
|
|
return n.Flags&net.FlagLoopback != 0
|
|
})
|
|
}
|