code refactoring; preparation for zoning support
authorVictor Kirhenshtein <victor@netxms.org>
Mon, 28 Mar 2011 15:42:27 +0000 (15:42 +0000)
committerVictor Kirhenshtein <victor@netxms.org>
Mon, 28 Mar 2011 15:42:27 +0000 (15:42 +0000)
doc/internal/db_format_change.txt
include/netxmsdb.h
include/nms_cscp.h
sql/schema.in
src/server/core/node.cpp
src/server/core/objects.cpp
src/server/core/subnet.cpp
src/server/core/zone.cpp
src/server/include/nms_objects.h
src/server/tools/nxdbmgr/upgrade.cpp

index 35da3e6..15fe9a7 100644 (file)
@@ -1,4 +1,13 @@
 ***************
+* 223 ==> 224 *
+***************
+
+- Columns "zone_type" and "controller_ip" dropped from table "zones"
+- Columns "agent_proxy", "snmp_proxy", "icmp_proxy" added to table "zones"
+- Table "zone_ip_addr_list" dropped
+
+
+***************
 * 222 ==> 223 *
 ***************
 
index a79ff67..56d33b9 100644 (file)
@@ -23,6 +23,6 @@
 #ifndef _netxmsdb_h
 #define _netxmsdb_h
 
-#define DB_FORMAT_VERSION   223
+#define DB_FORMAT_VERSION   224
 
 #endif
index 83519df..d6d8166 100644 (file)
@@ -621,9 +621,9 @@ typedef struct
 #define VID_NUM_VARIABLES           ((DWORD)144)
 #define VID_COMMAND                 ((DWORD)145)
 #define VID_PROTOCOL_VERSION        ((DWORD)146)
-#define VID_ZONE_GUID               ((DWORD)147)
-#define VID_ZONE_TYPE               ((DWORD)148)
-#define VID_CONTROLLER_IP_ADDR      ((DWORD)149)
+#define VID_ZONE_ID                 ((DWORD)147)
+#define VID_AGENT_PROXY             ((DWORD)148)
+#define VID_ICMP_PROXY              ((DWORD)149)
 #define VID_ADDR_LIST_SIZE          ((DWORD)150)
 #define VID_IP_ADDR_LIST            ((DWORD)151)
 #define VID_REMOVE_DCI              ((DWORD)152)
index 527a1a7..a6bb798 100644 (file)
@@ -181,25 +181,14 @@ CREATE TABLE zones
 (
        id integer not null,            // Zone object's ID
        zone_guid integer not null,     // Globally unique ID for zone
-       zone_type integer not null,     // Active or passive zone
-       controller_ip varchar(15) not null,
+       agent_proxy integer not null,
+       snmp_proxy integer not null,
+       icmp_proxy integer not null,
        PRIMARY KEY(id)
 ) TABLE_TYPE;
 
 
 /*
-** Zone IP address list
-*/
-
-CREATE TABLE zone_ip_addr_list
-(
-       zone_id integer not null,       // Zone object's ID
-       ip_addr varchar(15) not null,
-       PRIMARY KEY(zone_id,ip_addr)
-) TABLE_TYPE;
-
-
-/*
 ** Nodes information
 */
 
index 345f0a9..6fffa8b 100644 (file)
@@ -34,7 +34,7 @@ Node::Node()
    m_iStatus = STATUS_UNKNOWN;
    m_dwFlags = 0;
    m_dwDynamicFlags = 0;
-   m_dwZoneGUID = 0;
+   m_zoneId = 0;
    m_wAgentPort = AGENT_LISTEN_PORT;
    m_wAuthMethod = AUTH_NONE;
    m_szSharedSecret[0] = 0;
@@ -95,7 +95,7 @@ Node::Node(DWORD dwAddr, DWORD dwFlags, DWORD dwProxyNode, DWORD dwSNMPProxy, DW
    m_dwIpAddr = dwAddr;
    m_dwFlags = dwFlags;
    m_dwDynamicFlags = 0;
-   m_dwZoneGUID = dwZone;
+   m_zoneId = dwZone;
    m_wAgentPort = AGENT_LISTEN_PORT;
    m_wAuthMethod = AUTH_NONE;
    m_szSharedSecret[0] = 0;
@@ -222,7 +222,7 @@ BOOL Node::CreateFromDB(DWORD dwId)
    DBGetField(hResult, 0, 9, m_szAgentVersion, MAX_AGENT_VERSION_LEN);
    DBGetField(hResult, 0, 10, m_szPlatformName, MAX_PLATFORM_NAME_LEN);
    m_dwPollerNode = DBGetFieldULong(hResult, 0, 11);
-   m_dwZoneGUID = DBGetFieldULong(hResult, 0, 12);
+   m_zoneId = DBGetFieldULong(hResult, 0, 12);
    m_dwProxyNode = DBGetFieldULong(hResult, 0, 13);
    m_dwSNMPProxy = DBGetFieldULong(hResult, 0, 14);
    m_iRequiredPollCount = DBGetFieldLong(hResult, 0, 15);
@@ -344,7 +344,7 @@ BOOL Node::SaveToDB(DB_HANDLE hdb)
                  m_dwProxyNode, (const TCHAR *)DBPrepareString(hdb, m_szAgentVersion),
                  (const TCHAR *)DBPrepareString(hdb, m_szPlatformName),
                                          (const TCHAR *)DBPrepareString(hdb, m_sysDescription),
-                          m_dwPollerNode, m_dwZoneGUID, m_dwSNMPProxy, m_iRequiredPollCount, m_nUseIfXTable,
+                          m_dwPollerNode, m_zoneId, m_dwSNMPProxy, m_iRequiredPollCount, m_nUseIfXTable,
                                          (const TCHAR *)DBPrepareStringA(hdb, m_snmpSecurity->getAuthPassword()),
                                          (const TCHAR *)DBPrepareStringA(hdb, m_snmpSecurity->getPrivPassword()), snmpMethods,
                                          (const TCHAR *)DBPrepareString(hdb, m_sysName));
@@ -366,7 +366,7 @@ BOOL Node::SaveToDB(DB_HANDLE hdb)
                  (const TCHAR *)DBPrepareString(hdb, m_szObjectId),
                                          (const TCHAR *)DBPrepareString(hdb, m_sysDescription),
                  (const TCHAR *)DBPrepareString(hdb, m_szAgentVersion),
-                                         (const TCHAR *)DBPrepareString(hdb, m_szPlatformName), m_dwPollerNode, m_dwZoneGUID,
+                                         (const TCHAR *)DBPrepareString(hdb, m_szPlatformName), m_dwPollerNode, m_zoneId,
                  m_dwProxyNode, m_dwSNMPProxy, m_iRequiredPollCount,
                                          m_nUseIfXTable, (const TCHAR *)DBPrepareStringA(hdb, m_snmpSecurity->getAuthPassword()),
                                          (const TCHAR *)DBPrepareStringA(hdb, m_snmpSecurity->getPrivPassword()), snmpMethods,
@@ -842,7 +842,7 @@ void Node::createNewInterface(DWORD dwIpAddr, DWORD dwNetMask, const TCHAR *name
                                // Create new subnet object
                                if (dwIpAddr < 0xE0000000)
                                {
-                                       pSubnet = new Subnet(dwIpAddr & dwNetMask, dwNetMask, m_dwZoneGUID, bSyntheticMask);
+                                       pSubnet = new Subnet(dwIpAddr & dwNetMask, dwNetMask, m_zoneId, bSyntheticMask);
                                        NetObjInsert(pSubnet, TRUE);
                                        g_pEntireNet->AddSubnet(pSubnet);
                                }
@@ -2668,7 +2668,7 @@ void Node::CreateMessage(CSCPMessage *pMsg)
    pMsg->SetVariable(VID_AGENT_VERSION, m_szAgentVersion);
    pMsg->SetVariable(VID_PLATFORM_NAME, m_szPlatformName);
    pMsg->SetVariable(VID_POLLER_NODE_ID, m_dwPollerNode);
-   pMsg->SetVariable(VID_ZONE_GUID, m_dwZoneGUID);
+   pMsg->SetVariable(VID_ZONE_ID, m_zoneId);
    pMsg->SetVariable(VID_PROXY_NODE, m_dwProxyNode);
    pMsg->SetVariable(VID_SNMP_PROXY, m_dwSNMPProxy);
        pMsg->SetVariable(VID_REQUIRED_POLLS, (WORD)m_iRequiredPollCount);
@@ -3880,7 +3880,7 @@ void Node::CheckSubnetBinding(InterfaceList *pIfList)
                        else if (!isSync)
                        {
                                // Create subnet
-                               pSubnet = new Subnet(iface->dwIpAddr & iface->dwIpNetMask, iface->dwIpNetMask, m_dwZoneGUID, FALSE);
+                               pSubnet = new Subnet(iface->dwIpAddr & iface->dwIpNetMask, iface->dwIpNetMask, m_zoneId, FALSE);
                                NetObjInsert(pSubnet, TRUE);
                                g_pEntireNet->AddSubnet(pSubnet);
                                pSubnet->AddNode(this);
index efbc913..35c3610 100644 (file)
@@ -403,7 +403,7 @@ void NetObjInsert(NetObj *pObject, BOOL bNewObject)
             break;
          case OBJECT_ZONE:
             RWLockWriteLock(g_rwlockZoneIndex, INFINITE);
-            AddObjectToIndex(&g_pZoneIndexByGUID, &g_dwZoneGUIDIndexSize, ((Zone *)pObject)->GUID(), pObject);
+            AddObjectToIndex(&g_pZoneIndexByGUID, &g_dwZoneGUIDIndexSize, ((Zone *)pObject)->getZoneId(), pObject);
             RWLockUnlock(g_rwlockZoneIndex);
             break;
          case OBJECT_CONDITION:
@@ -474,7 +474,7 @@ void NetObjDeleteFromIndexes(NetObj *pObject)
          break;
       case OBJECT_ZONE:
          RWLockWriteLock(g_rwlockZoneIndex, INFINITE);
-         DeleteObjectFromIndex(&g_pZoneIndexByGUID, &g_dwZoneGUIDIndexSize, ((Zone *)pObject)->GUID());
+         DeleteObjectFromIndex(&g_pZoneIndexByGUID, &g_dwZoneGUIDIndexSize, ((Zone *)pObject)->getZoneId());
          RWLockUnlock(g_rwlockZoneIndex);
          break;
       case OBJECT_CONDITION:
@@ -953,9 +953,9 @@ BOOL LoadObjects()
                {
                   Zone *pZone;
 
-                  pZone = FindZoneByGUID(pSubnet->getZoneGUID());
+                  pZone = FindZoneByGUID(pSubnet->getZoneId());
                   if (pZone != NULL)
-                     pZone->AddSubnet(pSubnet);
+                     pZone->addSubnet(pSubnet);
                }
                else
                {
index feeeb37..b47741b 100644 (file)
@@ -31,7 +31,7 @@ Subnet::Subnet()
        :NetObj()
 {
    m_dwIpNetMask = 0;
-   m_dwZoneGUID = 0;
+   m_zoneId = 0;
        m_bSyntheticMask = false;
 }
 
@@ -47,7 +47,7 @@ Subnet::Subnet(DWORD dwAddr, DWORD dwNetMask, DWORD dwZone, bool bSyntheticMask)
    m_dwIpAddr = dwAddr;
    m_dwIpNetMask = dwNetMask;
    _sntprintf(m_szName, MAX_OBJECT_NAME, _T("%s/%d"), IpToStr(dwAddr, szBuffer), BitsInMask(dwNetMask));
-   m_dwZoneGUID = dwZone;
+   m_zoneId = dwZone;
        m_bSyntheticMask = bSyntheticMask;
 }
 
@@ -88,7 +88,7 @@ BOOL Subnet::CreateFromDB(DWORD dwId)
 
    m_dwIpAddr = DBGetFieldIPAddr(hResult, 0, 0);
    m_dwIpNetMask = DBGetFieldIPAddr(hResult, 0, 1);
-   m_dwZoneGUID = DBGetFieldULong(hResult, 0, 2);
+   m_zoneId = DBGetFieldULong(hResult, 0, 2);
        m_bSyntheticMask = DBGetFieldLong(hResult, 0, 3) ? true : false;
 
    DBFreeResult(hResult);
@@ -131,12 +131,12 @@ BOOL Subnet::SaveToDB(DB_HANDLE hdb)
       _sntprintf(szQuery, sizeof(szQuery) / sizeof(TCHAR), 
                           _T("INSERT INTO subnets (id,ip_addr,ip_netmask,zone_guid,synthetic_mask) VALUES (%d,'%s','%s',%d,%d)"),
                  m_dwId, IpToStr(m_dwIpAddr, szIpAddr),
-                                         IpToStr(m_dwIpNetMask, szNetMask), m_dwZoneGUID, m_bSyntheticMask ? 1 : 0);
+                                         IpToStr(m_dwIpNetMask, szNetMask), m_zoneId, m_bSyntheticMask ? 1 : 0);
    else
       _sntprintf(szQuery, sizeof(szQuery) / sizeof(TCHAR), 
                           _T("UPDATE subnets SET ip_addr='%s',ip_netmask='%s',zone_guid=%d,synthetic_mask=%d WHERE id=%d"),
                  IpToStr(m_dwIpAddr, szIpAddr),
-                                         IpToStr(m_dwIpNetMask, szNetMask), m_dwZoneGUID, m_bSyntheticMask ? 1 : 0, m_dwId);
+                                         IpToStr(m_dwIpNetMask, szNetMask), m_zoneId, m_bSyntheticMask ? 1 : 0, m_dwId);
    DBQuery(hdb, szQuery);
 
    // Update node to subnet mapping
@@ -190,7 +190,7 @@ void Subnet::CreateMessage(CSCPMessage *pMsg)
 {
    NetObj::CreateMessage(pMsg);
    pMsg->SetVariable(VID_IP_NETMASK, m_dwIpNetMask);
-   pMsg->SetVariable(VID_ZONE_GUID, m_dwZoneGUID);
+   pMsg->SetVariable(VID_ZONE_ID, m_zoneId);
        pMsg->SetVariable(VID_SYNTHETIC_MASK, (WORD)(m_bSyntheticMask ? 1 : 0));
 }
 
index 60df9f4..7326373 100644 (file)
@@ -1,6 +1,6 @@
 /* 
 ** NetXMS - Network Management System
-** Copyright (C) 2003, 2004, 2005 Victor Kirhenshtein
+** Copyright (C) 2003-2011 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
@@ -16,7 +16,7 @@
 ** along with this program; if not, write to the Free Software
 ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 **
-** $module: zone.cpp
+** File: zone.cpp
 **
 **/
 
@@ -31,12 +31,11 @@ Zone::Zone()
      :NetObj()
 {
    m_dwId = 0;
-   m_dwZoneGUID = 0;
-   m_dwControllerIpAddr = 0;
-   _tcscpy(m_szName, _T("Zone 0"));
-   m_dwAddrListSize = 0;
-   m_pdwIpAddrList = NULL;
-   m_iZoneType = ZONE_TYPE_ACTIVE;
+   m_zoneId = 0;
+   _tcscpy(m_szName, _T("Default"));
+   m_agentProxy = 0;
+   m_snmpProxy = 0;
+       m_icmpProxy = 0;
 }
 
 
@@ -46,7 +45,6 @@ Zone::Zone()
 
 Zone::~Zone()
 {
-   safe_free(m_pdwIpAddrList);
 }
 
 
@@ -58,14 +56,13 @@ BOOL Zone::CreateFromDB(DWORD dwId)
 {
    TCHAR szQuery[256];
    DB_RESULT hResult;
-   DWORD i;
 
    m_dwId = dwId;
 
    if (!LoadCommonProperties())
       return FALSE;
 
-   _sntprintf(szQuery, 256, _T("SELECT zone_guid,zone_type,controller_ip FROM zones WHERE id=%d"), dwId);
+   _sntprintf(szQuery, 256, _T("SELECT zone_guid,agent_proxy,snmp_proxy,icmp_proxy FROM zones WHERE id=%d"), dwId);
    hResult = DBSelect(g_hCoreDB, szQuery);
    if (hResult == NULL)
       return FALSE;     // Query failed
@@ -75,8 +72,7 @@ BOOL Zone::CreateFromDB(DWORD dwId)
       DBFreeResult(hResult);
       if (dwId == BUILTIN_OID_ZONE0)
       {
-         m_dwZoneGUID = 0;
-         m_iZoneType = ZONE_TYPE_ACTIVE;
+         m_zoneId = 0;
          return TRUE;
       }
       else
@@ -85,27 +81,13 @@ BOOL Zone::CreateFromDB(DWORD dwId)
       }
    }
 
-   m_dwZoneGUID = DBGetFieldULong(hResult, 0, 0);
-   m_iZoneType = DBGetFieldLong(hResult, 0, 1);
-   m_dwControllerIpAddr = DBGetFieldIPAddr(hResult, 0, 2);
+   m_zoneId = DBGetFieldULong(hResult, 0, 0);
+   m_agentProxy = DBGetFieldULong(hResult, 0, 1);
+   m_snmpProxy = DBGetFieldULong(hResult, 0, 2);
+   m_icmpProxy = DBGetFieldULong(hResult, 0, 3);
 
    DBFreeResult(hResult);
 
-   // Load IP address list
-   if (m_iZoneType == ZONE_TYPE_PASSIVE)
-   {
-      _sntprintf(szQuery, 256, _T("SELECT ip_addr FROM zone_ip_addr_list WHERE zone_id=%d"), m_dwId);
-      hResult = DBSelect(g_hCoreDB, szQuery);
-      if (hResult != NULL)
-      {
-         m_dwAddrListSize = DBGetNumRows(hResult);
-         m_pdwIpAddrList = (DWORD *)malloc(sizeof(DWORD) * m_dwAddrListSize);
-         for(i = 0; i < m_dwAddrListSize; i++)
-            m_pdwIpAddrList[i] = DBGetFieldIPAddr(hResult, i, 0);
-         DBFreeResult(hResult);
-      }
-   }
-
    // Load access list
    LoadACLFromDB();
 
@@ -120,9 +102,8 @@ BOOL Zone::CreateFromDB(DWORD dwId)
 BOOL Zone::SaveToDB(DB_HANDLE hdb)
 {
    BOOL bNewObject = TRUE;
-   TCHAR szIpAddr[16], szQuery[8192];
+   TCHAR szQuery[8192];
    DB_RESULT hResult;
-   DWORD i;
 
    LockData();
 
@@ -140,30 +121,15 @@ BOOL Zone::SaveToDB(DB_HANDLE hdb)
 
    // Form and execute INSERT or UPDATE query
    if (bNewObject)
-      _sntprintf(szQuery, 8192, _T("INSERT INTO zones (id,zone_guid,zone_type,controller_ip)")
-                          _T(" VALUES (%d,%d,%d,'%s')"),
-                 m_dwId, m_dwZoneGUID, m_iZoneType,
-                 IpToStr(m_dwControllerIpAddr, szIpAddr));
+      _sntprintf(szQuery, 8192, _T("INSERT INTO zones (id,zone_guid,agent_proxy,snmp_proxy,icmp_proxy)")
+                          _T(" VALUES (%d,%d,%d,%d,%d)"),
+                 m_dwId, m_zoneId, m_agentProxy, m_snmpProxy, m_icmpProxy);
    else
-      _sntprintf(szQuery, 8192, _T("UPDATE zones SET zone_guid=%d,zone_type=%d,")
-                                _T("controller_ip='%s' WHERE id=%d"),
-                 m_dwZoneGUID, m_iZoneType,
-                 IpToStr(m_dwControllerIpAddr, szIpAddr), m_dwId);
+      _sntprintf(szQuery, 8192, _T("UPDATE zones SET zone_guid=%d,agent_proxy=%d,")
+                                _T("snmp_proxy=%d,icmp_proxy=%d WHERE id=%d"),
+                 m_zoneId, m_agentProxy, m_snmpProxy, m_icmpProxy, m_dwId);
    DBQuery(hdb, szQuery);
 
-   // Save ip address list
-   _sntprintf(szQuery, sizeof(szQuery) / sizeof(TCHAR), _T("DELETE FROM zone_ip_addr_list WHERE zone_id=%d"), m_dwId);
-   DBQuery(hdb, szQuery);
-   if (m_iZoneType == ZONE_TYPE_PASSIVE)
-   {
-      for(i = 0; i < m_dwAddrListSize; i++)
-      {
-         _sntprintf(szQuery, sizeof(szQuery) / sizeof(TCHAR), _T("INSERT INTO zone_ip_addr_list (zone_id,ip_addr) VALUES (%d,'%s')"),
-                   m_dwId, IpToStr(m_pdwIpAddrList[i], szIpAddr));
-         DBQuery(hdb, szQuery);
-      }
-   }
-   
    SaveACLToDB(hdb);
 
    // Unlock object and clear modification flag
@@ -177,7 +143,7 @@ BOOL Zone::SaveToDB(DB_HANDLE hdb)
 // Delete zone object from database
 //
 
-BOOL Zone::DeleteFromDB(void)
+BOOL Zone::DeleteFromDB()
 {
    TCHAR szQuery[256];
    BOOL bSuccess;
@@ -187,8 +153,6 @@ BOOL Zone::DeleteFromDB(void)
    {
       _sntprintf(szQuery, sizeof(szQuery) / sizeof(TCHAR), _T("DELETE FROM zones WHERE id=%d"), m_dwId);
       QueueSQLRequest(szQuery);
-      _sntprintf(szQuery, sizeof(szQuery) / sizeof(TCHAR), _T("DELETE FROM zone_ip_addr_list WHERE zone_id=%d"), m_dwId);
-      QueueSQLRequest(szQuery);
    }
    return bSuccess;
 }
@@ -201,11 +165,10 @@ BOOL Zone::DeleteFromDB(void)
 void Zone::CreateMessage(CSCPMessage *pMsg)
 {
    NetObj::CreateMessage(pMsg);
-   pMsg->SetVariable(VID_ZONE_GUID, m_dwZoneGUID);
-   pMsg->SetVariable(VID_ZONE_TYPE, (WORD)m_iZoneType);
-   pMsg->SetVariable(VID_CONTROLLER_IP_ADDR, m_dwControllerIpAddr);
-   pMsg->SetVariable(VID_ADDR_LIST_SIZE, m_dwAddrListSize);
-   pMsg->SetVariableToInt32Array(VID_IP_ADDR_LIST, m_dwAddrListSize, m_pdwIpAddrList);
+   pMsg->SetVariable(VID_ZONE_ID, m_zoneId);
+   pMsg->SetVariable(VID_AGENT_PROXY, m_agentProxy);
+   pMsg->SetVariable(VID_SNMP_PROXY, m_snmpProxy);
+   pMsg->SetVariable(VID_ICMP_PROXY, m_icmpProxy);
 }
 
 
@@ -218,5 +181,14 @@ DWORD Zone::ModifyFromMessage(CSCPMessage *pRequest, BOOL bAlreadyLocked)
    if (!bAlreadyLocked)
       LockData();
 
+       if (pRequest->IsVariableExist(VID_AGENT_PROXY))
+               m_agentProxy = pRequest->GetVariableLong(VID_AGENT_PROXY);
+
+       if (pRequest->IsVariableExist(VID_SNMP_PROXY))
+               m_agentProxy = pRequest->GetVariableLong(VID_SNMP_PROXY);
+
+       if (pRequest->IsVariableExist(VID_ICMP_PROXY))
+               m_agentProxy = pRequest->GetVariableLong(VID_ICMP_PROXY);
+
    return NetObj::ModifyFromMessage(pRequest, TRUE);
 }
index 9ff5784..97bcf09 100644 (file)
@@ -641,7 +641,7 @@ protected:
        int m_iPendingStatus;
        int m_iPollCount;
        int m_iRequiredPollCount;
-   DWORD m_dwZoneGUID;
+   DWORD m_zoneId;
    WORD m_wAgentPort;
    WORD m_wAuthMethod;
    TCHAR m_szSharedSecret[MAX_SECRET_LENGTH];
@@ -718,7 +718,7 @@ public:
    Node(DWORD dwAddr, DWORD dwFlags, DWORD dwProxyNode, DWORD dwSNMPProxy, DWORD dwZone);
    virtual ~Node();
 
-   virtual int Type(void) { return OBJECT_NODE; }
+   virtual int Type() { return OBJECT_NODE; }
 
    virtual BOOL SaveToDB(DB_HANDLE hdb);
    virtual BOOL DeleteFromDB();
@@ -730,7 +730,7 @@ public:
 
    DWORD getFlags() { return m_dwFlags; }
    DWORD getRuntimeFlags() { return m_dwDynamicFlags; }
-   DWORD getZoneGUID() { return m_dwZoneGUID; }
+   DWORD getZoneId() { return m_zoneId; }
    void setLocalMgmtFlag() { m_dwFlags |= NF_IS_LOCAL_MGMT; }
    void clearLocalMgmtFlag() { m_dwFlags &= ~NF_IS_LOCAL_MGMT; }
 
@@ -970,7 +970,7 @@ class NXCORE_EXPORTABLE Subnet : public NetObj
 {
 protected:
    DWORD m_dwIpNetMask;
-   DWORD m_dwZoneGUID;
+   DWORD m_zoneId;
        bool m_bSyntheticMask;
 
 public:
@@ -988,7 +988,7 @@ public:
    virtual void CreateMessage(CSCPMessage *pMsg);
 
    DWORD getIpNetMask() { return m_dwIpNetMask; }
-   DWORD getZoneGUID() { return m_dwZoneGUID; }
+   DWORD getZoneId() { return m_zoneId; }
        bool isSyntheticMask() { return m_bSyntheticMask; }
 
        void setCorrectMask(DWORD dwAddr, DWORD dwMask);
@@ -1097,7 +1097,7 @@ public:
    TemplateGroup(TCHAR *pszName) : Container(pszName, 0) { }
    virtual ~TemplateGroup() { }
 
-   virtual int Type(void) { return OBJECT_TEMPLATEGROUP; }
+   virtual int Type() { return OBJECT_TEMPLATEGROUP; }
    virtual void CalculateCompoundStatus(BOOL bForcedRecalc = FALSE);
 };
 
@@ -1109,28 +1109,27 @@ public:
 class Zone : public NetObj
 {
 protected:
-   DWORD m_dwZoneGUID;
-   int m_iZoneType;
-   DWORD m_dwControllerIpAddr;
-   DWORD m_dwAddrListSize;
-   DWORD *m_pdwIpAddrList;
+   DWORD m_zoneId;
+   DWORD m_agentProxy;
+   DWORD m_snmpProxy;
+       DWORD m_icmpProxy;
 
 public:
    Zone();
    virtual ~Zone();
 
-   virtual int Type(void) { return OBJECT_ZONE; }
+   virtual int Type() { return OBJECT_ZONE; }
 
    virtual BOOL SaveToDB(DB_HANDLE hdb);
-   virtual BOOL DeleteFromDB(void);
+   virtual BOOL DeleteFromDB();
    virtual BOOL CreateFromDB(DWORD dwId);
 
    virtual void CreateMessage(CSCPMessage *pMsg);
    virtual DWORD ModifyFromMessage(CSCPMessage *pRequest, BOOL bAlreadyLocked = FALSE);
 
-   DWORD GUID(void) { return m_dwZoneGUID; }
+   DWORD getZoneId() { return m_zoneId; }
 
-   void AddSubnet(Subnet *pSubnet) { AddChild(pSubnet); pSubnet->AddParent(this); }
+   void addSubnet(Subnet *pSubnet) { AddChild(pSubnet); pSubnet->AddParent(this); }
 };
 
 
index 96d6b20..5c9fdda 100644 (file)
@@ -249,6 +249,29 @@ static BOOL SetColumnNullable(const TCHAR *table, const TCHAR *column, const TCH
 
 
 //
+// Upgrade from V223 to V224
+//
+
+static BOOL H_UpgradeFromV223(int currVersion, int newVersion)
+{
+       static TCHAR batch[] = 
+               _T("DROP TABLE zone_ip_addr_list\n")
+               _T("ALTER TABLE zones DROP COLUMN zone_type\n")
+               _T("ALTER TABLE zones DROP COLUMN controller_ip\n")
+               _T("ALTER TABLE zones ADD agent_proxy integer\n")
+               _T("ALTER TABLE zones ADD snmp_proxy integer\n")
+               _T("ALTER TABLE zones ADD icmp_proxy integer\n")
+               _T("UPDATE zones SET agent_proxy=0,snmp_proxy=0,icmp_proxy=0\n")
+               _T("<END>");
+
+       CHK_EXEC(SQLBatch(batch));
+
+       CHK_EXEC(SQLQuery(_T("UPDATE metadata SET var_value='224' WHERE var_name='SchemaVersion'")));
+   return TRUE;
+}
+
+
+//
 // Upgrade from V222 to V223
 //
 
@@ -5117,6 +5140,7 @@ static struct
        { 220, 221, H_UpgradeFromV220 },
        { 221, 222, H_UpgradeFromV221 },
        { 222, 223, H_UpgradeFromV222 },
+       { 223, 224, H_UpgradeFromV223 },
    { 0, NULL }
 };