- bugfix: SYS_NODE_UP event was not sent after changing IP address of node which...
authorVictor Kirhenshtein <victor@netxms.org>
Wed, 15 Nov 2006 15:49:14 +0000 (15:49 +0000)
committerVictor Kirhenshtein <victor@netxms.org>
Wed, 15 Nov 2006 15:49:14 +0000 (15:49 +0000)
- Fixed last problems with discovery configurator

src/server/core/node.cpp
src/server/core/poll.cpp
src/server/include/nms_objects.h

index 11bf3fd..25d1f73 100644 (file)
@@ -861,8 +861,6 @@ void Node::ConfigurationPoll(ClientSession *pSession, DWORD dwRqId,
    // Check for forced capabilities recheck
    if (m_dwDynamicFlags & NDF_RECHECK_CAPABILITIES)
    {
    // Check for forced capabilities recheck
    if (m_dwDynamicFlags & NDF_RECHECK_CAPABILITIES)
    {
-      m_dwDynamicFlags &= ~(NDF_UNREACHABLE | NDF_SNMP_UNREACHABLE |
-                            NDF_CPSNMP_UNREACHABLE | NDF_AGENT_UNREACHABLE);
       m_dwFlags &= ~(NF_IS_NATIVE_AGENT | NF_IS_SNMP | NF_IS_CPSNMP |
                      NF_IS_BRIDGE | NF_IS_ROUTER | NF_IS_OSPF);
       m_szObjectId[0] = 0;
       m_dwFlags &= ~(NF_IS_NATIVE_AGENT | NF_IS_SNMP | NF_IS_CPSNMP |
                      NF_IS_BRIDGE | NF_IS_ROUTER | NF_IS_OSPF);
       m_szObjectId[0] = 0;
@@ -871,7 +869,7 @@ void Node::ConfigurationPoll(ClientSession *pSession, DWORD dwRqId,
    }
 
    // Check if node is marked as unreachable
    }
 
    // Check if node is marked as unreachable
-   if (m_dwDynamicFlags & NDF_UNREACHABLE)
+   if ((m_dwDynamicFlags & NDF_UNREACHABLE) && !(m_dwDynamicFlags & NDF_RECHECK_CAPABILITIES))
    {
       SendPollerMsg(dwRqId, _T("Node is marked as unreachable, configuration poll aborted\r\n"));
       DbgPrintf(AF_DEBUG_DISCOVERY, "Node is marked as unreachable, configuration poll aborted");
    {
       SendPollerMsg(dwRqId, _T("Node is marked as unreachable, configuration poll aborted\r\n"));
       DbgPrintf(AF_DEBUG_DISCOVERY, "Node is marked as unreachable, configuration poll aborted");
@@ -901,7 +899,12 @@ void Node::ConfigurationPoll(ClientSession *pSession, DWORD dwRqId,
             }
 
             m_dwFlags |= NF_IS_SNMP;
             }
 
             m_dwFlags |= NF_IS_SNMP;
-            m_dwDynamicFlags &= ~NDF_SNMP_UNREACHABLE;
+            if (m_dwDynamicFlags & NDF_SNMP_UNREACHABLE)
+            {
+               m_dwDynamicFlags &= ~NDF_SNMP_UNREACHABLE;
+               PostEvent(EVENT_SNMP_OK, m_dwId, NULL);
+               SendPollerMsg(dwRqId, "   Connectivity with SNMP agent restored\r\n");
+            }
             SendPollerMsg(dwRqId, _T("   SNMP agent is active\r\n"));
 
             // Check node type
             SendPollerMsg(dwRqId, _T("   SNMP agent is active\r\n"));
 
             // Check node type
@@ -1012,7 +1015,12 @@ void Node::ConfigurationPoll(ClientSession *pSession, DWORD dwRqId,
             DbgPrintf(AF_DEBUG_DISCOVERY, "ConfPoll(%s): checking for NetXMS agent - connected", m_szName);
             LockData();
             m_dwFlags |= NF_IS_NATIVE_AGENT;
             DbgPrintf(AF_DEBUG_DISCOVERY, "ConfPoll(%s): checking for NetXMS agent - connected", m_szName);
             LockData();
             m_dwFlags |= NF_IS_NATIVE_AGENT;
-            m_dwDynamicFlags &= ~NDF_AGENT_UNREACHABLE;
+            if (m_dwDynamicFlags & NDF_AGENT_UNREACHABLE)
+            {
+               m_dwDynamicFlags &= ~NDF_AGENT_UNREACHABLE;
+               PostEvent(EVENT_AGENT_OK, m_dwId, NULL);
+               SendPollerMsg(dwRqId, "   Connectivity with NetXMS agent restored\r\n");
+            }
             UnlockData();
       
             if (pAgentConn->GetParameter("Agent.Version", MAX_AGENT_VERSION_LEN, szBuffer) == ERR_SUCCESS)
             UnlockData();
       
             if (pAgentConn->GetParameter("Agent.Version", MAX_AGENT_VERSION_LEN, szBuffer) == ERR_SUCCESS)
index 7116d9a..4e7e6ad 100644 (file)
@@ -646,4 +646,16 @@ void ResetDiscoveryPoller(void)
       if (pInfo != INVALID_POINTER_VALUE)
          free(pInfo);
    }
       if (pInfo != INVALID_POINTER_VALUE)
          free(pInfo);
    }
+
+   // Reload discovery parameters
+   g_dwDiscoveryPollingInterval = ConfigReadInt("DiscoveryPollingInterval", 900);
+   if (ConfigReadInt("RunNetworkDiscovery", 0))
+      g_dwFlags |= AF_ENABLE_NETWORK_DISCOVERY;
+   else
+      g_dwFlags &= ~AF_ENABLE_NETWORK_DISCOVERY;
+
+   if (ConfigReadInt("ActiveNetworkDiscovery", 0))
+      g_dwFlags |= AF_ACTIVE_NETWORK_DISCOVERY;
+   else
+      g_dwFlags &= ~AF_ACTIVE_NETWORK_DISCOVERY;
 }
 }
index f038682..487b3e6 100644 (file)
@@ -1,6 +1,6 @@
 /* 
 ** NetXMS - Network Management System
 /* 
 ** NetXMS - Network Management System
-** Copyright (C) 2003, 2004, 2005 Victor Kirhenshtein
+** Copyright (C) 2003, 2004, 2005, 2006 Victor Kirhenshtein
 **
 ** This program is free software; you can redistribute it and/or modify
 ** it under the terms of the GNU General Public License as published by
 **
 ** This program is free software; you can redistribute it and/or modify
 ** it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
 ** along with this program; if not, write to the Free Software
 ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 **
 ** along with this program; if not, write to the Free Software
 ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 **
-** $module: nms_objects.h
+** File: nms_objects.h
 **
 **/
 
 **
 **/