Browse code

Fix fixed-cidr daemon option

- Logic is broken when gateway ip falls in ip-range
and ip-range is not the first block in the network

Signed-off-by: Alessandro Boch <aboch@docker.com>

Alessandro Boch authored on 2015/11/10 08:30:30
Showing 1 changed files
... ...
@@ -794,7 +794,33 @@ func (s *DockerDaemonSuite) TestDaemonBridgeFixedCidr(c *check.C) {
794 794
 	}
795 795
 }
796 796
 
797
-func (s *DockerDaemonSuite) TestDaemonBridgeFixedCidrFixedCIDREqualBridgeNetwork(c *check.C) {
797
+func (s *DockerDaemonSuite) TestDaemonBridgeFixedCidr2(c *check.C) {
798
+	d := s.d
799
+
800
+	bridgeName := "external-bridge"
801
+	bridgeIP := "10.2.2.1/16"
802
+
803
+	out, err := createInterface(c, "bridge", bridgeName, bridgeIP)
804
+	c.Assert(err, check.IsNil, check.Commentf(out))
805
+	defer deleteInterface(c, bridgeName)
806
+
807
+	err = d.StartWithBusybox("--bip", bridgeIP, "--fixed-cidr", "10.2.2.0/24")
808
+	c.Assert(err, check.IsNil)
809
+	defer s.d.Restart()
810
+
811
+	out, err = d.Cmd("run", "-d", "--name", "bb", "busybox", "top")
812
+	c.Assert(err, checker.IsNil, check.Commentf(out))
813
+	defer d.Cmd("stop", "bb")
814
+
815
+	out, err = d.Cmd("exec", "bb", "/bin/sh", "-c", "ifconfig eth0 | awk '/inet addr/{print substr($2,6)}'")
816
+	c.Assert(out, checker.Equals, "10.2.2.0\n")
817
+
818
+	out, err = d.Cmd("run", "--rm", "busybox", "/bin/sh", "-c", "ifconfig eth0 | awk '/inet addr/{print substr($2,6)}'")
819
+	c.Assert(err, checker.IsNil, check.Commentf(out))
820
+	c.Assert(out, checker.Equals, "10.2.2.2\n")
821
+}
822
+
823
+func (s *DockerDaemonSuite) TestDaemonBridgeFixedCIDREqualBridgeNetwork(c *check.C) {
798 824
 	d := s.d
799 825
 
800 826
 	bridgeName := "external-bridge"