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  }