mirror of https://github.com/apache/cloudstack.git
bug 7322: fix NPE when setting firewall rule for 1:1 NAT on kvm
status 7322: resolved fixed
This commit is contained in:
parent
1ce538b6a9
commit
bb790b41f7
|
|
@ -447,19 +447,54 @@ public class VirtualRoutingResource implements Manager {
|
|||
}
|
||||
|
||||
protected Answer execute(final SetFirewallRuleCommand cmd) {
|
||||
final String result = setFirewallRules(cmd.isEnable(),
|
||||
cmd.getRouterName(),
|
||||
cmd.getRouterIpAddress(),
|
||||
cmd.getProtocol().toLowerCase(),
|
||||
cmd.getPublicIpAddress(),
|
||||
cmd.getPublicPort(),
|
||||
cmd.getPrivateIpAddress(),
|
||||
cmd.getPrivatePort(),
|
||||
cmd.getOldPrivateIP(),
|
||||
cmd.getOldPrivatePort(),
|
||||
cmd.getVlanNetmask());
|
||||
|
||||
return new Answer(cmd, result == null, result);
|
||||
String args;
|
||||
|
||||
if(cmd.isNat()){
|
||||
//1:1 NAT needs instanceip;publicip;domrip;op
|
||||
if(cmd.isCreate())
|
||||
args = "-A";
|
||||
else
|
||||
args = "-D";
|
||||
|
||||
args += " -l " + cmd.getPublicIpAddress();
|
||||
args += " -i " + cmd.getRouterIpAddress();
|
||||
args += " -r " + cmd.getPrivateIpAddress();
|
||||
args += " -G " + cmd.getProtocol();
|
||||
}else{
|
||||
if (cmd.isEnable()) {
|
||||
args = "-A";
|
||||
} else {
|
||||
args = "-D";
|
||||
}
|
||||
|
||||
args += " -P " + cmd.getProtocol().toLowerCase();
|
||||
args += " -l " + cmd.getPublicIpAddress();
|
||||
args += " -p " + cmd.getPublicPort();
|
||||
args += " -n " + cmd.getRouterName();
|
||||
args += " -i " + cmd.getRouterIpAddress();
|
||||
args += " -r " + cmd.getPrivateIpAddress();
|
||||
args += " -d " + cmd.getPrivatePort();
|
||||
args += " -N " + cmd.getVlanNetmask();
|
||||
|
||||
String oldPrivateIP = cmd.getOldPrivateIP();
|
||||
String oldPrivatePort = cmd.getOldPrivatePort();
|
||||
|
||||
if (oldPrivateIP != null) {
|
||||
args += " -w " + oldPrivateIP;
|
||||
}
|
||||
|
||||
if (oldPrivatePort != null) {
|
||||
args += " -x " + oldPrivatePort;
|
||||
}
|
||||
}
|
||||
|
||||
final Script command = new Script(_firewallPath, _timeout, s_logger);
|
||||
String [] argsArray = args.split(" ");
|
||||
for (String param : argsArray) {
|
||||
command.add(param);
|
||||
}
|
||||
String result = command.execute();
|
||||
return new Answer(cmd, result == null, result);
|
||||
}
|
||||
|
||||
protected String getDefaultScriptsDir() {
|
||||
|
|
|
|||
Loading…
Reference in New Issue