func getLocalIPv4()

in tester/dhcpv4/tester.go [80:102]


func getLocalIPv4(ifname string) (net.IP, error) {
	iface, err := net.InterfaceByName(ifname)
	if err != nil {
		//nolint:wrapcheck
		return nil, err
	}

	ifaddrs, err := iface.Addrs()
	if err != nil {
		//nolint:wrapcheck
		return nil, err
	}

	for _, ifaddr := range ifaddrs {
		if ipnet, ok := ifaddr.(*net.IPNet); ok {
			if ipnet.IP.To4() != nil && !ipnet.IP.IsLoopback() && !ipnet.IP.IsLinkLocalUnicast() {
				return ipnet.IP, nil
			}
		}
	}

	return nil, fmt.Errorf("%w, interface: %s", ErrNoAddress, ifname)
}