本文整理汇总了Golang中github.com/coreos/rudder/pkg/ip.IP4Net.Overlaps方法的典型用法代码示例。如果您正苦于以下问题:Golang IP4Net.Overlaps方法的具体用法?Golang IP4Net.Overlaps怎么用?Golang IP4Net.Overlaps使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/coreos/rudder/pkg/ip.IP4Net
的用法示例。
在下文中一共展示了IP4Net.Overlaps方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: allocateSubnet
func (sm *SubnetManager) allocateSubnet() (ip.IP4Net, error) {
log.Infof("Picking subnet in range %s ... %s", sm.config.SubnetMin, sm.config.SubnetMax)
var bag []ip.IP4
sn := ip.IP4Net{IP: sm.config.SubnetMin, PrefixLen: sm.config.SubnetLen}
OuterLoop:
for ; sn.IP <= sm.config.SubnetMax && len(bag) < 100; sn = sn.Next() {
for _, l := range sm.leases {
if sn.Overlaps(l.Network) {
continue OuterLoop
}
}
bag = append(bag, sn.IP)
}
if len(bag) == 0 {
return ip.IP4Net{}, errors.New("out of subnets")
} else {
i := randInt(0, len(bag))
return ip.IP4Net{IP: bag[i], PrefixLen: sm.config.SubnetLen}, nil
}
}