diff --git a/awsapi/src/com/cloud/bridge/service/EC2RestServlet.java b/awsapi/src/com/cloud/bridge/service/EC2RestServlet.java index e20966237ee..29a002cebaf 100644 --- a/awsapi/src/com/cloud/bridge/service/EC2RestServlet.java +++ b/awsapi/src/com/cloud/bridge/service/EC2RestServlet.java @@ -707,12 +707,20 @@ public class EC2RestServlet extends HttpServlet { else break; String[] fromPort = request.getParameterValues( "IpPermissions." + nCount + ".FromPort" ); - if ( null != fromPort && 0 < fromPort.length) - perm.setFromPort( Integer.parseInt( fromPort[0])); + if ( null != fromPort && 0 < fromPort.length ) { + if ( protocol[0].equalsIgnoreCase("icmp") ) + perm.setIcmpType( fromPort[0] ) ; + else + perm.setFromPort( Integer.parseInt( fromPort[0]) ); + } String[] toPort = request.getParameterValues( "IpPermissions." + nCount + ".ToPort" ); - if ( null != toPort && 0 < toPort.length) - perm.setToPort( Integer.parseInt( toPort[0])); + if ( null != toPort && 0 < toPort.length ) { + if ( protocol[0].equalsIgnoreCase("icmp") ) + perm.setIcmpCode( toPort[0] ); + else + perm.setToPort( Integer.parseInt( toPort[0]) ); + } // -> list: IpPermissions.n.IpRanges.m.CidrIp mCount = 1; @@ -780,12 +788,20 @@ public class EC2RestServlet extends HttpServlet { else break; String[] fromPort = request.getParameterValues( "IpPermissions." + nCount + ".FromPort" ); - if ( null != fromPort && 0 < fromPort.length) - perm.setFromPort( Integer.parseInt( fromPort[0])); + if ( null != fromPort && 0 < fromPort.length ) { + if ( protocol[0].equalsIgnoreCase("icmp") ) + perm.setIcmpType( fromPort[0] ) ; + else + perm.setFromPort( Integer.parseInt( fromPort[0]) ); + } String[] toPort = request.getParameterValues( "IpPermissions." + nCount + ".ToPort" ); - if ( null != toPort && 0 < toPort.length) - perm.setToPort( Integer.parseInt( toPort[0])); + if ( null != toPort && 0 < toPort.length ) { + if ( protocol[0].equalsIgnoreCase("icmp") ) + perm.setIcmpCode( toPort[0] ); + else + perm.setToPort( Integer.parseInt( toPort[0]) ); + } // -> list: IpPermissions.n.IpRanges.m.CidrIp int mCount = 1;