mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Removal of the regex to replace ips
Signed-off-by: Mingzhen Feng <fmzhen@zju.edu.cn>
This commit is contained in:
parent
e4855eebf2
commit
3ab7ceb5d7
2 changed files with 36 additions and 9 deletions
|
@ -564,6 +564,41 @@ func (s *DockerDaemonSuite) TestDaemonBridgeIP(c *check.C) {
|
||||||
deleteInterface(c, defaultNetworkBridge)
|
deleteInterface(c, defaultNetworkBridge)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *DockerDaemonSuite) TestDaemonRestartWithBridgeIPChange(c *check.C) {
|
||||||
|
if err := s.d.Start(); err != nil {
|
||||||
|
c.Fatalf("Could not start daemon: %v", err)
|
||||||
|
}
|
||||||
|
defer s.d.Restart()
|
||||||
|
if err := s.d.Stop(); err != nil {
|
||||||
|
c.Fatalf("Could not stop daemon: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// now we will change the docker0's IP and then try starting the daemon
|
||||||
|
bridgeIP := "192.169.100.1/24"
|
||||||
|
_, bridgeIPNet, _ := net.ParseCIDR(bridgeIP)
|
||||||
|
|
||||||
|
ipCmd := exec.Command("ifconfig", "docker0", bridgeIP)
|
||||||
|
stdout, stderr, _, err := runCommandWithStdoutStderr(ipCmd)
|
||||||
|
if err != nil {
|
||||||
|
c.Fatalf("failed to change docker0's IP association: %v, stdout: %q, stderr: %q", err, stdout, stderr)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := s.d.Start("--bip", bridgeIP); err != nil {
|
||||||
|
c.Fatalf("Could not start daemon: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
//check if the iptables contains new bridgeIP MASQUERADE rule
|
||||||
|
ipTablesSearchString := bridgeIPNet.String()
|
||||||
|
ipTablesCmd := exec.Command("iptables", "-t", "nat", "-nvL")
|
||||||
|
out, _, err := runCommandWithOutput(ipTablesCmd)
|
||||||
|
if err != nil {
|
||||||
|
c.Fatalf("Could not run iptables -nvL: %s, %v", out, err)
|
||||||
|
}
|
||||||
|
if !strings.Contains(out, ipTablesSearchString) {
|
||||||
|
c.Fatalf("iptables output should have contained new MASQUERADE rule with IP %q, but was %q", ipTablesSearchString, out)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (s *DockerDaemonSuite) TestDaemonBridgeFixedCidr(c *check.C) {
|
func (s *DockerDaemonSuite) TestDaemonBridgeFixedCidr(c *check.C) {
|
||||||
d := s.d
|
d := s.d
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,6 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"regexp"
|
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
@ -267,14 +266,7 @@ func Exists(table Table, chain string, rule ...string) bool {
|
||||||
ruleString := strings.Join(rule, " ")
|
ruleString := strings.Join(rule, " ")
|
||||||
existingRules, _ := exec.Command(iptablesPath, "-t", string(table), "-S", chain).Output()
|
existingRules, _ := exec.Command(iptablesPath, "-t", string(table), "-S", chain).Output()
|
||||||
|
|
||||||
// regex to replace ips in rule
|
return strings.Contains(string(existingRules), ruleString)
|
||||||
// because MASQUERADE rule will not be exactly what was passed
|
|
||||||
re := regexp.MustCompile(`[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\/[0-9]{1,2}`)
|
|
||||||
|
|
||||||
return strings.Contains(
|
|
||||||
re.ReplaceAllString(string(existingRules), "?"),
|
|
||||||
re.ReplaceAllString(ruleString, "?"),
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Call 'iptables' system command, passing supplied arguments
|
// Call 'iptables' system command, passing supplied arguments
|
||||||
|
|
Loading…
Add table
Reference in a new issue