diff --git a/core/src/com/cloud/network/resource/JuniperSrxResource.java b/core/src/com/cloud/network/resource/JuniperSrxResource.java index 66ddddf602a..5bf1d0da92b 100644 --- a/core/src/com/cloud/network/resource/JuniperSrxResource.java +++ b/core/src/com/cloud/network/resource/JuniperSrxResource.java @@ -1546,17 +1546,16 @@ public class JuniperSrxResource implements ServerResource { return sendRequestAndCheckResponse(command, xml, "name", publicIp + "/32"); case CHECK_IF_IN_USE: - // Check if any static or destination NAT rules use this proxy ARP entry - List staticAndDestNatRules = getAllStaticAndDestNatRules(); - - for (String[] rule : staticAndDestNatRules) { - String rulePublicIp = rule[0]; - if (publicIp.equals(rulePublicIp)) { - return true; - } - } - - return false; + // Check if any NAT rules are using this proxy ARP entry + String poolName = genSourceNatPoolName(publicIp); + + String allStaticNatRules = sendRequest(SrxXml.STATIC_NAT_RULE_GETALL.getXml()); + String allDestNatRules = sendRequest(replaceXmlValue(SrxXml.DEST_NAT_RULE_GETALL.getXml(), "rule-set", _publicZone)); + String allSrcNatRules = sendRequest(SrxXml.SRC_NAT_RULE_GETALL.getXml()); + + return (allStaticNatRules.contains(publicIp) || + allDestNatRules.contains(publicIp) || + allSrcNatRules.contains(poolName)); case ADD: if (manageProxyArp(SrxCommand.CHECK_IF_EXISTS, publicVlanTag, publicIp)) {