Files
netbird/client/system/ip.go
2024-01-17 09:03:41 +01:00

43 lines
805 B
Go

package system
import (
"net"
log "github.com/sirupsen/logrus"
)
func localAddresses() (string, string) {
conn, err := net.Dial("udp", "8.8.8.8:53")
if err != nil {
log.Errorf("failed to check ip: %s", err)
return "", ""
}
defer conn.Close()
localAddr := conn.LocalAddr().(*net.UDPAddr)
ifaces, err := net.Interfaces()
if err != nil {
log.Errorf("failed to list interfaces: %s", err)
return "", ""
}
for _, i := range ifaces {
addrs, err := i.Addrs()
if err != nil {
log.Errorf("failed to list addresses: %s", err)
continue
}
for _, addr := range addrs {
cidr, _, err := net.ParseCIDR(addr.String())
if err != nil {
continue
}
if localAddr.IP.String() == cidr.String() {
return addr.String(), i.HardwareAddr.String()
}
}
}
return "", ""
}