1
0
Fork 0
mirror of https://github.com/anyproto/anytype-heart.git synced 2025-06-08 05:47:07 +09:00
anytype-heart/net/addrs/interface.go
AnastasiaShemyakinskaya ecde3165b7
GO-3171: refactoring
Signed-off-by: AnastasiaShemyakinskaya <shem98a@mail.ru>
2024-05-27 22:13:47 +02:00

48 lines
985 B
Go

//go:build !android
// +build !android
package addrs
import (
"net"
"golang.org/x/exp/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 slices.ContainsFunc(interfaces, func(n net.Interface) bool {
return n.Flags&net.FlagLoopback != 0
})
}