Use the Computer Cabling Redundancy IP Status API to monitor the state of connections to IP addresses.
The following BASIC script generates or clears an alarm depending upon the state of the connection to an IP address.
Declare Function InitSocketChange CDecl Lib "redwinsock.dll" _
() As Long
Declare Function WaitSocketChange CDecl Lib "redwinsock.dll" _
(ByVal data As Long, ByVal timeout As Long) As Long
Declare Function CloseSocketChange CDecl Lib "redwinsock.dll" _
(ByVal data As Long) As Boolean
Declare Function GetNextSocketChange CDecl Lib "redwinsock.dll" _
(ByVal data As Long, ByVal node As String, ByRef ipAddress As Long, _
ByRef state As Long) As Long
Declare Function CvtIPAddress(x As Long) As String
Sub Main()
Dim data As Long
im node As String
Dim ipAddress As Long
Dim state As Long
Dim n256 As Long
n256 = 256
data = InitSocketChange()
If data <> 0 Then
While 1
= WaitSocketChange(data, 5000)
If i = 1 Then
ode = Space(256)
While GetNextSocketChange(data, node, ipAddress, state)
ipStr$ = CvtIPAddress(ipAddress)
message$ = "IP address " & ipStr$
refId$ = ipAddress
If state = 2 Then
AlarmUpdate "", "IPALARM", "$SYSTEM", AM_RESET_M, _
message$, "", refId$
Else
AlarmGenerate "", "IPALARM", "$SYSTEM", message$, _
"", refId$, True
End If
node = Space(256)
Wend
End If
Wend
i = CloseSocketChange(data)
End If
End Sub
Function CvtIPAddress(x As Long) As String
mod1 = ipAddress Mod n256
If mod1 < 0 Then mod1 = 256 + mod1
mod2 = ipAddress / n256 Mod n256
f mod2 < 0 Then mod2 = 256 + mod2
mod3 = ipAddress / (n256 * n256) Mod n256
If mod3 < 0 Then mod3 = 256 + mod3
mod4 = ipaddress / (n256 * n256 * n256) Mod n256
If mod4 < 0 Then mod4 = 256 + mod4
CvtIPAddress = mod1 & "." & mod2 & "." & mod3 & "." & mod4
End Function
Computer cabling redundancy monitoring. |