Merge pull request #391 from tangle329/master
Validate rangeStart and rangeEnd specified in conf
This commit is contained in:
commit
21d96393ea
@ -57,13 +57,13 @@ func NewIPAllocator(conf *IPAMConfig, store backend.Store) (*IPAllocator, error)
|
|||||||
start = ip.NextIP(start)
|
start = ip.NextIP(start)
|
||||||
|
|
||||||
if conf.RangeStart != nil {
|
if conf.RangeStart != nil {
|
||||||
if err := validateRangeIP(conf.RangeStart, (*net.IPNet)(&conf.Subnet), nil, nil); err != nil {
|
if err := validateRangeIP(conf.RangeStart, (*net.IPNet)(&conf.Subnet), start, end); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
start = conf.RangeStart
|
start = conf.RangeStart
|
||||||
}
|
}
|
||||||
if conf.RangeEnd != nil {
|
if conf.RangeEnd != nil {
|
||||||
if err := validateRangeIP(conf.RangeEnd, (*net.IPNet)(&conf.Subnet), start, nil); err != nil {
|
if err := validateRangeIP(conf.RangeEnd, (*net.IPNet)(&conf.Subnet), start, end); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
end = conf.RangeEnd
|
end = conf.RangeEnd
|
||||||
|
@ -263,33 +263,55 @@ var _ = Describe("host-local ip allocator", func() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
It("RangeStart must be in the given subnet", func() {
|
It("RangeStart must be in the given subnet", func() {
|
||||||
subnet, err := types.ParseCIDR("192.168.1.0/24")
|
testcases := []struct {
|
||||||
Expect(err).ToNot(HaveOccurred())
|
name string
|
||||||
|
ipnet string
|
||||||
conf := IPAMConfig{
|
start string
|
||||||
Name: "test",
|
}{
|
||||||
Type: "host-local",
|
{"outside-subnet", "192.168.1.0/24", "10.0.0.1"},
|
||||||
Subnet: types.IPNet{IP: subnet.IP, Mask: subnet.Mask},
|
{"zero-ip", "10.1.0.0/16", "10.1.0.0"},
|
||||||
RangeStart: net.ParseIP("10.0.0.1"),
|
}
|
||||||
|
|
||||||
|
for _, tc := range testcases {
|
||||||
|
subnet, err := types.ParseCIDR(tc.ipnet)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
conf := IPAMConfig{
|
||||||
|
Name: tc.name,
|
||||||
|
Type: "host-local",
|
||||||
|
Subnet: types.IPNet{IP: subnet.IP, Mask: subnet.Mask},
|
||||||
|
RangeStart: net.ParseIP(tc.start),
|
||||||
|
}
|
||||||
|
store := fakestore.NewFakeStore(map[string]string{}, net.ParseIP(""))
|
||||||
|
_, err = NewIPAllocator(&conf, store)
|
||||||
|
Expect(err).To(HaveOccurred())
|
||||||
}
|
}
|
||||||
store := fakestore.NewFakeStore(map[string]string{}, net.ParseIP(""))
|
|
||||||
_, err = NewIPAllocator(&conf, store)
|
|
||||||
Expect(err).To(HaveOccurred())
|
|
||||||
})
|
})
|
||||||
|
|
||||||
It("RangeEnd must be in the given subnet", func() {
|
It("RangeEnd must be in the given subnet", func() {
|
||||||
subnet, err := types.ParseCIDR("192.168.1.0/24")
|
testcases := []struct {
|
||||||
Expect(err).ToNot(HaveOccurred())
|
name string
|
||||||
|
ipnet string
|
||||||
conf := IPAMConfig{
|
end string
|
||||||
Name: "test",
|
}{
|
||||||
Type: "host-local",
|
{"outside-subnet", "192.168.1.0/24", "10.0.0.1"},
|
||||||
Subnet: types.IPNet{IP: subnet.IP, Mask: subnet.Mask},
|
{"broadcast-ip", "10.1.0.0/16", "10.1.255.255"},
|
||||||
RangeEnd: net.ParseIP("10.0.0.1"),
|
}
|
||||||
|
|
||||||
|
for _, tc := range testcases {
|
||||||
|
subnet, err := types.ParseCIDR(tc.ipnet)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
conf := IPAMConfig{
|
||||||
|
Name: tc.name,
|
||||||
|
Type: "host-local",
|
||||||
|
Subnet: types.IPNet{IP: subnet.IP, Mask: subnet.Mask},
|
||||||
|
RangeEnd: net.ParseIP(tc.end),
|
||||||
|
}
|
||||||
|
store := fakestore.NewFakeStore(map[string]string{}, net.ParseIP(""))
|
||||||
|
_, err = NewIPAllocator(&conf, store)
|
||||||
|
Expect(err).To(HaveOccurred())
|
||||||
}
|
}
|
||||||
store := fakestore.NewFakeStore(map[string]string{}, net.ParseIP(""))
|
|
||||||
_, err = NewIPAllocator(&conf, store)
|
|
||||||
Expect(err).To(HaveOccurred())
|
|
||||||
})
|
})
|
||||||
|
|
||||||
It("RangeEnd must be after RangeStart in the given subnet", func() {
|
It("RangeEnd must be after RangeStart in the given subnet", func() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user