Dec 2 2009
More fun with IPs, this time converting them to integers.
<cffunction name="IPtoInt" output="false" returntype="struct"
hint="Returns a struct with two nodes<br />
Start: The starting IP address for the range specified<br />
End: The last IP address in the range
Range: Number of IP Addresses in the range"
>
<cfargument name="IPAddress" type="string" required="true" hint="" />
<cfset var LOCAL = StructNew() />
<cfset LOCAL.retVal = StructNew() />
<cfset LOCAL.retVal.range = 0 />
<cfif ListLen(Arguments.IPAddress, ".") LT 4>
<cfset LOCAL.retVal.range = 255^(4-ListLen(Arguments.IPAddress, ".")) />
<cfloop from="1" to="#4-ListLen(Arguments.IPAddress, ".")#" index="LOCAL.i">
<cfset Arguments.IPAddress &= ".0" />
</cfloop>
</cfif>
<cfset LOCAL.Octets = ListToArray(Arguments.IPAddress, ".") />
<cfloop array="#LOCAL.Octets#" index="LOCAL.octet">
<cfif LOCAL.octet LT 0 OR LOCAL.octet GT 255>
<cfthrow
type="exception"
message="Invalid Octet"
detail="The octet '#LOCAL.octet#' is outside acceptable range. Octets must between 0 and 255." />
</cfif>
</cfloop>
<cfif LOCAL.Octets[1] LT 128>
<cfset LOCAL.base = LOCAL.Octets[1] * 16777216 />
<cfelse>
<cfset LOCAL.base = -(256 - LOCAL.Octets[1]) * 16777216 />
</cfif>
<cfset LOCAL.retVal.Start = LOCAL.base + (LOCAL.Octets[2] * 65536) + (LOCAL.Octets[3] * 256) + (LOCAL.Octets[4]) />
<cfset LOCAL.retVal.End = LOCAL.retVal.Start + LOCAL.retVal.Range />
<cfreturn LOCAL.retVal />
</cffunction>

3-22-2010
12-11-2009
12-2-2009
12-2-2009
11-24-2009