| // Copyright 2017 Google Inc. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| // +build !js | |
| package uuid | |
| import "net" | |
| var interfaces []net.Interface // cached list of interfaces | |
| // getHardwareInterface returns the name and hardware address of interface name. | |
| // If name is "" then the name and hardware address of one of the system's | |
| // interfaces is returned. If no interfaces are found (name does not exist or | |
| // there are no interfaces) then "", nil is returned. | |
| // | |
| // Only addresses of at least 6 bytes are returned. | |
| func getHardwareInterface(name string) (string, []byte) { | |
| if interfaces == nil { | |
| var err error | |
| interfaces, err = net.Interfaces() | |
| if err != nil { | |
| return "", nil | |
| } | |
| } | |
| for _, ifs := range interfaces { | |
| if len(ifs.HardwareAddr) >= 6 && (name == "" || name == ifs.Name) { | |
| return ifs.Name, ifs.HardwareAddr | |
| } | |
| } | |
| return "", nil | |
| } |