summaryrefslogtreecommitdiff
path: root/libpod/network/cni/config_test.go
diff options
context:
space:
mode:
authorPaul Holzinger <pholzing@redhat.com>2021-08-26 12:10:08 +0200
committerPaul Holzinger <pholzing@redhat.com>2021-09-15 18:05:26 +0200
commitaa7bc4e37168e4cdb4469ba8b728d7f5157e46b5 (patch)
tree44ec15dfff52a1b04134b24f597e418b9b87d96c /libpod/network/cni/config_test.go
parentc0cde378298bd8d5183155c8f62aae574be069eb (diff)
downloadpodman-aa7bc4e37168e4cdb4469ba8b728d7f5157e46b5.tar.gz
podman-aa7bc4e37168e4cdb4469ba8b728d7f5157e46b5.tar.bz2
podman-aa7bc4e37168e4cdb4469ba8b728d7f5157e46b5.zip
network create: validate the input subnet
Check that the given subnet does not conflict with existing ones (other configs or host interfaces). Signed-off-by: Paul Holzinger <pholzing@redhat.com>
Diffstat (limited to 'libpod/network/cni/config_test.go')
-rw-r--r--libpod/network/cni/config_test.go27
1 files changed, 26 insertions, 1 deletions
diff --git a/libpod/network/cni/config_test.go b/libpod/network/cni/config_test.go
index f67402657..2465f1d1c 100644
--- a/libpod/network/cni/config_test.go
+++ b/libpod/network/cni/config_test.go
@@ -508,6 +508,9 @@ var _ = Describe("Config", func() {
Expect(network1.Subnets[0].Gateway.String()).To(Equal("10.0.0.1"))
Expect(network1.Subnets[0].LeaseRange.StartIP.String()).To(Equal(startIP))
+ err = libpodNet.NetworkRemove(network1.Name)
+ Expect(err).To(BeNil())
+
endIP := "10.0.0.10"
network = types.Network{
Driver: "bridge",
@@ -529,6 +532,9 @@ var _ = Describe("Config", func() {
Expect(network1.Subnets[0].Gateway.String()).To(Equal("10.0.0.1"))
Expect(network1.Subnets[0].LeaseRange.EndIP.String()).To(Equal(endIP))
+ err = libpodNet.NetworkRemove(network1.Name)
+ Expect(err).To(BeNil())
+
network = types.Network{
Driver: "bridge",
Subnets: []types.Subnet{
@@ -590,7 +596,7 @@ var _ = Describe("Config", func() {
}
_, err := libpodNet.NetworkCreate(network)
Expect(err).To(HaveOccurred())
- Expect(err.Error()).To(ContainSubstring("subnet invalid"))
+ Expect(err.Error()).To(ContainSubstring("subnet ip is nil"))
})
It("create network with name", func() {
@@ -886,6 +892,25 @@ var _ = Describe("Config", func() {
Expect(err.Error()).To(Equal("default network podman cannot be removed"))
})
+ It("network create with same subnet", func() {
+ subnet := "10.0.0.0/24"
+ n, _ := types.ParseCIDR(subnet)
+ subnet2 := "10.10.0.0/24"
+ n2, _ := types.ParseCIDR(subnet2)
+ network := types.Network{Subnets: []types.Subnet{{Subnet: n}, {Subnet: n2}}}
+ network1, err := libpodNet.NetworkCreate(network)
+ Expect(err).To(BeNil())
+ Expect(network1.Subnets).To(HaveLen(2))
+ network = types.Network{Subnets: []types.Subnet{{Subnet: n}}}
+ _, err = libpodNet.NetworkCreate(network)
+ Expect(err).To(HaveOccurred())
+ Expect(err.Error()).To(ContainSubstring("subnet 10.0.0.0/24 is already used on the host or by another config"))
+ network = types.Network{Subnets: []types.Subnet{{Subnet: n2}}}
+ _, err = libpodNet.NetworkCreate(network)
+ Expect(err).To(HaveOccurred())
+ Expect(err.Error()).To(ContainSubstring("subnet 10.10.0.0/24 is already used on the host or by another config"))
+ })
+
})
Context("network load valid existing ones", func() {