diff --git a/cns/common/utils.go b/cns/common/utils.go new file mode 100644 index 0000000000..b807929e51 --- /dev/null +++ b/cns/common/utils.go @@ -0,0 +1,29 @@ +package common + +import ( + "fmt" + "os/exec" + + "github.com/Azure/azure-container-networking/log" +) + +func ExecuteShellCommand(command string) error { + log.Printf("[Azure-CNS] %s", command) + cmd := exec.Command("sh", "-c", command) + err := cmd.Start() + if err != nil { + return err + } + return cmd.Wait() +} + +func SetOutboundSNAT(subnet string) error { + cmd := fmt.Sprintf("iptables -t nat -A POSTROUTING -m iprange ! --dst-range 168.63.129.16 -m addrtype ! --dst-type local ! -d %v -j MASQUERADE", + subnet) + err := ExecuteShellCommand(cmd) + if err != nil { + log.Printf("SNAT Iptable rule was not set") + return err + } + return nil +}