func Network()

in providers/shared/network.go [24:51]


func Network() (ips, macs []string, err error) {
	ifcs, err := net.Interfaces()
	if err != nil {
		return nil, nil, err
	}

	// This function fetches all the addresses in a single syscall. Fetching addresses individually for each interface
	// can be expensive when the host has a lot of interfaces. This usually happens when the host is doing virtualized
	// networking for guests, in Kubernetes for example.
	addrs, err := net.InterfaceAddrs()
	if err != nil {
		return nil, nil, err
	}
	ips = make([]string, 0, len(addrs))
	for _, addr := range addrs {
		ips = append(ips, addr.String())
	}

	macs = make([]string, 0, len(ifcs))
	for _, ifc := range ifcs {
		mac := ifc.HardwareAddr.String()
		if mac != "" {
			macs = append(macs, mac)
		}
	}

	return ips, macs, nil
}