Skip to content

Commit

Permalink
Merge pull request #124 from squeed/masq-del
Browse files Browse the repository at this point in the history
pkg/ip: Tearing down ipmasq should be idempotent
  • Loading branch information
Casey Callendrello committed Mar 7, 2018
2 parents 372bb5e + c850d45 commit 56989e2
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 5 deletions.
4 changes: 2 additions & 2 deletions Godeps/Godeps.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

24 changes: 21 additions & 3 deletions pkg/ip/ipmasq_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,13 +89,31 @@ func TeardownIPMasq(ipn *net.IPNet, chain string, comment string) error {
return fmt.Errorf("failed to locate iptables: %v", err)
}

if err = ipt.Delete("nat", "POSTROUTING", "-s", ipn.String(), "-j", chain, "-m", "comment", "--comment", comment); err != nil {
err = ipt.Delete("nat", "POSTROUTING", "-s", ipn.String(), "-j", chain, "-m", "comment", "--comment", comment)
if err != nil && !isNotExist(err) {
return err
}

if err = ipt.ClearChain("nat", chain); err != nil {
err = ipt.ClearChain("nat", chain)
if err != nil && !isNotExist(err) {
return err

}

err = ipt.DeleteChain("nat", chain)
if err != nil && !isNotExist(err) {
return err
}

return ipt.DeleteChain("nat", chain)
return nil
}

// isNotExist returnst true if the error is from iptables indicating
// that the target does not exist.
func isNotExist(err error) bool {
e, ok := err.(*iptables.Error)
if !ok {
return false
}
return e.IsNotExist()
}
5 changes: 5 additions & 0 deletions vendor/github.com/coreos/go-iptables/NOTICE

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions vendor/github.com/coreos/go-iptables/iptables/iptables.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 56989e2

Please sign in to comment.