Added OSPF support detection
authorVictor Kirhenshtein <victor@netxms.org>
Mon, 31 Jan 2005 17:15:42 +0000 (17:15 +0000)
committerVictor Kirhenshtein <victor@netxms.org>
Mon, 31 Jan 2005 17:15:42 +0000 (17:15 +0000)
ChangeLog
include/nxclapi.h
src/console/win32/ObjectPropCaps.cpp
src/server/core/node.cpp
src/server/include/nms_objects.h

index 3bd5056..d4b9a55 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -11,6 +11,7 @@
   Solaris subagent
 - Object status now recalculated after binding change
 - Implemented primary IP address selection for nodes
+- Added OSPF support detection
 
 
 *
index efbeb7c..a31729f 100644 (file)
@@ -156,7 +156,7 @@ typedef void * NXC_SESSION;
 #define NF_IS_ROUTER       0x0008
 #define NF_IS_LOCAL_MGMT   0x0010
 #define NF_IS_PRINTER      0x0020
-#define NS_IS_OSPF         0x0040
+#define NF_IS_OSPF         0x0040
 
 
 //
index fb29a57..03d121b 100644 (file)
@@ -64,6 +64,7 @@ BOOL CObjectPropCaps::OnInitDialog()
 
    // Fill list control with data
    AddListRecord(_T("agentVersion"), m_pObject->node.szAgentVersion);
+   AddListRecord(_T("isOSPF"), (m_pObject->node.dwFlags & NF_IS_OSPF));
    AddListRecord(_T("isSNMP"), (m_pObject->node.dwFlags & NF_IS_SNMP));
    AddListRecord(_T("isNetXMSAgent"), (m_pObject->node.dwFlags & NF_IS_NATIVE_AGENT));
    AddListRecord(_T("isManagementServer"), (m_pObject->node.dwFlags & NF_IS_LOCAL_MGMT));
index 2d32de9..eaa51bd 100644 (file)
@@ -378,6 +378,12 @@ void Node::NewNodePoll(DWORD dwNetMask)
       }
    }
 
+   // Check OSPF capabilities
+   if (m_dwFlags & NF_IS_SNMP)
+   {
+      CheckOSPFSupport();
+   }
+
    pAgentConn = new AgentConnection(htonl(m_dwIpAddr), m_wAgentPort, m_wAuthMethod,
                                     m_szSharedSecret);
    if (pAgentConn->Connect())
@@ -766,6 +772,8 @@ void Node::ConfigurationPoll(ClientSession *pSession, DWORD dwRqId)
          m_dwNodeType = dwNodeType;
          SendPollerMsg(dwRqId, _T("   Node type has been changed to %d\r\n"), m_dwNodeType);
       }
+
+      CheckOSPFSupport();
    }
    else
    {
@@ -1387,3 +1395,26 @@ void Node::OnObjectDelete(DWORD dwObjectId)
    }
    Unlock();
 }
+
+
+//
+// Check node for OSPF support
+//
+
+void Node::CheckOSPFSupport(void)
+{
+   long nAdminStatus;
+
+   if (SnmpGet(m_iSNMPVersion, m_dwIpAddr, m_szCommunityString, ".1.3.6.1.2.1.14.1.2.0",
+               NULL, 0, &nAdminStatus, sizeof(long), FALSE, FALSE) == SNMP_ERR_SUCCESS)
+   {
+      if (nAdminStatus)
+      {
+         m_dwFlags |= NF_IS_OSPF;
+      }
+      else
+      {
+         m_dwFlags &= ~NF_IS_OSPF;
+      }
+   }
+}
index 80fb450..cd45575 100644 (file)
@@ -371,6 +371,8 @@ protected:
    void AgentLock(void) { MutexLock(m_hAgentAccessMutex, INFINITE); }
    void AgentUnlock(void) { MutexUnlock(m_hAgentAccessMutex); }
 
+   void CheckOSPFSupport(void);
+
    virtual void OnObjectDelete(DWORD dwObjectId);
 
 public: