<%
' Initialize error handling
Call InitializeErrorHandling("addsubnetbackend.asp")
' Get form inputs
Dim vlan, ipstart, cidr, description, subnettypeid, cidrarray, ipend
vlan = Trim(Request.Form("vlan"))
ipstart = Trim(Request.Form("ipstart"))
cidr = Trim(Request.Form("cidr"))
description = Trim(Request.Form("description"))
subnettypeid = Trim(Request.Form("subnettypeid"))
' Validate required fields
If vlan = "" Or ipstart = "" Or cidr = "" Or subnettypeid = "" Then
Call HandleValidationError("addsubnet.asp", "REQUIRED_FIELD")
End If
' Validate VLAN is numeric
If Not IsNumeric(vlan) Then
Call HandleValidationError("addsubnet.asp", "INVALID_INPUT")
End If
' Validate IP address
If Not ValidateIPAddress(ipstart) Then
Call HandleValidationError("addsubnet.asp", "INVALID_IP")
End If
' Validate subnet type ID
If Not ValidateID(subnettypeid) Then
Call HandleValidationError("addsubnet.asp", "INVALID_ID")
End If
' Parse CIDR value (expected format: "cidr,ipend")
If InStr(cidr, ",") = 0 Then
Call HandleValidationError("addsubnet.asp", "INVALID_INPUT")
End If
cidrarray = Split(cidr, ",")
If UBound(cidrarray) < 1 Then
Call HandleValidationError("addsubnet.asp", "INVALID_INPUT")
End If
ipend = Trim(cidrarray(1))
cidr = Trim(cidrarray(0))
' Validate CIDR is numeric
If Not IsNumeric(cidr) Or CInt(cidr) < 0 Or CInt(cidr) > 32 Then
Call HandleValidationError("addsubnet.asp", "INVALID_INPUT")
End If
' Validate ipend is numeric
If Not IsNumeric(ipend) Then
Call HandleValidationError("addsubnet.asp", "INVALID_INPUT")
End If
' Validate description length
If Len(description) > 500 Then
Call HandleValidationError("addsubnet.asp", "INVALID_INPUT")
End If
' Verify subnet type exists
If Not RecordExists(objConn, "subnettypes", "subnettypeid", subnettypeid) Then
Call HandleValidationError("addsubnet.asp", "NOT_FOUND")
End If
' Insert using parameterized query
' Note: INET_ATON requires the IP address parameter, ipend is added to the result
strSQL = "INSERT INTO subnets (vlan, description, cidr, ipstart, ipend, subnettypeid, isactive) " & _
"VALUES (?, ?, ?, INET_ATON(?), (INET_ATON(?) + ?), ?, 1)"
Dim recordsAffected
recordsAffected = ExecuteParameterizedInsert(objConn, strSQL, Array(vlan, description, cidr, ipstart, ipstart, ipend, subnettypeid))
' Cleanup resources
Call CleanupResources()
If recordsAffected > 0 Then
Response.Redirect("./displaysubnets.asp")
Else
Response.Write("Error: Failed to add subnet.")
End If
%>