func()

in lib/rr.go [58:75]


func (rr *roundRobin) SelectRatioBasedDhcpServer(message *DHCPMessage) (server *DHCPServer, err error) {
	// hash the clientid to see if it should be RC/Stable
	hash := rr.getHash(message.ClientID)

	rr.lock.Lock()

	if hash%100 < rr.rcRatio {
		rr.iterList = rr.iterRC
		rr.iterRC++
		rr.lock.Unlock()
		return rr.SelectServerFromList(rr.rc, message)
	}
	//otherwise go stable
	rr.iterList = rr.iterStable
	rr.iterStable++
	rr.lock.Unlock()
	return rr.SelectServerFromList(rr.stable, message)
}