}
startIP, endIP := a.getSearchRange()
- for cur := startIP; !cur.Equal(endIP); cur = a.nextIP(cur) {
+ for cur := startIP; ; cur = a.nextIP(cur) {
// don't allocate gateway IP
if gw != nil && cur.Equal(gw) {
continue
Routes: a.conf.Routes,
}, nil
}
+ // break here to complete the loop
+ if cur.Equal(endIP) {
+ break
+ }
}
return nil, fmt.Errorf("no IP addresses available in network: %s", a.conf.Name)
}
expectResult: "10.0.0.2",
lastIP: "",
},
+ {
+ subnet: "10.0.0.0/30",
+ ipmap: map[string]string{},
+ expectResult: "10.0.0.2",
+ lastIP: "",
+ },
{
subnet: "10.0.0.0/29",
ipmap: map[string]string{
expectResult: "10.0.0.3",
lastIP: "10.0.0.128",
},
+ // wrap around and reserve lastIP
+ {
+ subnet: "10.0.0.0/29",
+ ipmap: map[string]string{
+ "10.0.0.2": "id",
+ "10.0.0.4": "id",
+ "10.0.0.5": "id",
+ "10.0.0.6": "id",
+ },
+ expectResult: "10.0.0.3",
+ lastIP: "10.0.0.3",
+ },
}
for _, tc := range testCases {