evcc-io/hems/semp/helper.go

30 lines
477 B
Go

package semp
import "net"
// LocalIPs returns a slice of local IPv4 addresses
func LocalIPs() []net.IP {
ips := make([]net.IP, 0)
ifaces, err := net.Interfaces()
if err != nil {
panic(err)
}
for _, i := range ifaces {
addrs, err := i.Addrs()
if err != nil {
panic(err)
}
for _, addr := range addrs {
if ip, ok := addr.(*net.IPNet); ok {
if !ip.IP.IsLoopback() && ip.IP.To4() != nil {
ips = append(ips, ip.IP)
}
}
}
}
return ips
}