github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/fleetmanager/hypervisors/fsstorer/check.go (about) 1 package fsstorer 2 3 import ( 4 "errors" 5 "net" 6 ) 7 8 func (s *Storer) checkIpIsRegistered(addr net.IP) (bool, error) { 9 if ip, err := netIpToIp(addr); err != nil { 10 return false, err 11 } else { 12 s.mutex.RLock() 13 defer s.mutex.RUnlock() 14 _, ok := s.ipToHypervisor[ip] 15 return ok, nil 16 } 17 } 18 19 func netIpToIp(netIP net.IP) (IP, error) { 20 switch len(netIP) { 21 case 4: 22 case 16: 23 netIP = netIP.To4() 24 if netIP == nil { 25 return zeroIP, errors.New("bad IP") 26 } 27 default: 28 return zeroIP, errors.New("bad IP") 29 } 30 var ip IP 31 copy(ip[:], netIP) 32 return ip, nil 33 }