SNMP code refactoring; added copy constructor for SNMP PDU class
authorVictor Kirhenshtein <victor@netxms.org>
Wed, 30 Apr 2014 18:29:17 +0000 (21:29 +0300)
committerVictor Kirhenshtein <victor@netxms.org>
Wed, 30 Apr 2014 18:29:17 +0000 (21:29 +0300)
48 files changed:
include/nms_util.h
include/nxsnmp.h
src/agent/core/service.cpp
src/libnetxms/tools.cpp
src/server/core/bridge.cpp
src/server/core/cdp.cpp
src/server/core/components.cpp
src/server/core/dctable.cpp
src/server/core/dctcolumn.cpp
src/server/core/fdb.cpp
src/server/core/import.cpp
src/server/core/lldp.cpp
src/server/core/ndp.cpp
src/server/core/node.cpp
src/server/core/nxsl_classes.cpp
src/server/core/nxslext.cpp
src/server/core/objtools.cpp
src/server/core/session.cpp
src/server/core/snmp.cpp
src/server/core/snmptrap.cpp
src/server/core/stp.cpp
src/server/core/vrrp.cpp
src/server/drivers/at/at.cpp
src/server/drivers/cat2900xl/cat2900xl.cpp
src/server/drivers/catalyst/catalyst.cpp
src/server/drivers/lib/avaya-ers/avaya-ers.cpp
src/server/drivers/lib/avaya-ers/vlan-if.cpp
src/server/drivers/lib/cisco/cisco.cpp
src/server/drivers/netscreen/netscreen.cpp
src/server/drivers/ntws/ntws.cpp
src/server/drivers/symbol-ws/symbol-ws.cpp
src/server/include/nxsrvapi.h
src/server/libnxsrv/ndd.cpp
src/server/libnxsrv/snmp.cpp
src/server/libnxsrv/snmpproxy.cpp
src/snmp/libnxsnmp/ber.cpp
src/snmp/libnxsnmp/engine.cpp
src/snmp/libnxsnmp/libnxsnmp.h
src/snmp/libnxsnmp/main.cpp
src/snmp/libnxsnmp/oid.cpp
src/snmp/libnxsnmp/pdu.cpp
src/snmp/libnxsnmp/transport.cpp
src/snmp/libnxsnmp/variable.cpp
src/snmp/nxsnmpget/nxsnmpget.cpp
src/snmp/nxsnmpset/nxsnmpset.cpp
src/snmp/nxsnmpwalk/nxsnmpwalk.cpp
webui/webapp/Mobile/src/org/netxms/webui/mobile/Configuration.java
webui/webapp/Mobile/src/org/netxms/webui/mobile/widgets/NavigationBar.java

index 3f006a9..c72c078 100644 (file)
@@ -232,8 +232,8 @@ public:
        void addString(const TCHAR *pStr, UINT32 dwLen);
        void addDynamicString(TCHAR *pszStr) { if (pszStr != NULL) { *this += pszStr; free(pszStr); } }
 
-       void addMultiByteString(const char *pStr, UINT32 dwSize, int nCodePage);
-       void addWideCharString(const WCHAR *pStr, UINT32 dwSize);
+       void addMultiByteString(const char *pStr, UINT32 size, int nCodePage);
+       void addWideCharString(const WCHAR *pStr, UINT32 size);
 
    void addFormattedString(const TCHAR *format, ...);
    void addFormattedStringV(const TCHAR *format, va_list args);
@@ -994,26 +994,26 @@ extern "C"
 #define ResolveHostName ResolveHostNameA
 #endif
 
-   void LIBNETXMS_EXPORTABLE *nx_memdup(const void *pData, UINT32 dwSize);
-   void LIBNETXMS_EXPORTABLE nx_memswap(void *pBlock1, void *pBlock2, UINT32 dwSize);
+   void LIBNETXMS_EXPORTABLE *nx_memdup(const void *data, size_t size);
+   void LIBNETXMS_EXPORTABLE nx_memswap(void *block1, void *block2, size_t size);
 
-   WCHAR LIBNETXMS_EXPORTABLE *BinToStrW(const BYTE *pData, UINT32 dwSize, WCHAR *pStr);
-   char LIBNETXMS_EXPORTABLE *BinToStrA(const BYTE *pData, UINT32 dwSize, char *pStr);
+   WCHAR LIBNETXMS_EXPORTABLE *BinToStrW(const BYTE *data, size_t size, WCHAR *pStr);
+   char LIBNETXMS_EXPORTABLE *BinToStrA(const BYTE *data, size_t size, char *pStr);
 #ifdef UNICODE
 #define BinToStr BinToStrW
 #else
 #define BinToStr BinToStrA
 #endif
 
-   UINT32 LIBNETXMS_EXPORTABLE StrToBinW(const WCHAR *pStr, BYTE *pData, UINT32 dwSize);
-   UINT32 LIBNETXMS_EXPORTABLE StrToBinA(const char *pStr, BYTE *pData, UINT32 dwSize);
+   UINT32 LIBNETXMS_EXPORTABLE StrToBinW(const WCHAR *pStr, BYTE *data, UINT32 size);
+   UINT32 LIBNETXMS_EXPORTABLE StrToBinA(const char *pStr, BYTE *data, UINT32 size);
 #ifdef UNICODE
 #define StrToBin StrToBinW
 #else
 #define StrToBin StrToBinA
 #endif
 
-   TCHAR LIBNETXMS_EXPORTABLE *MACToStr(const BYTE *pData, TCHAR *pStr);
+   TCHAR LIBNETXMS_EXPORTABLE *MACToStr(const BYTE *data, TCHAR *pStr);
 
    void LIBNETXMS_EXPORTABLE StrStripA(char *pszStr);
    void LIBNETXMS_EXPORTABLE StrStripW(WCHAR *pszStr);
@@ -1074,7 +1074,7 @@ extern "C"
 #define LoadFileA LoadFile
 #endif
 
-   UINT32 LIBNETXMS_EXPORTABLE CalculateCRC32(const unsigned char *pData, UINT32 dwSize, UINT32 dwCRC);
+   UINT32 LIBNETXMS_EXPORTABLE CalculateCRC32(const unsigned char *data, UINT32 size, UINT32 dwCRC);
    void LIBNETXMS_EXPORTABLE CalculateMD5Hash(const unsigned char *data, size_t nbytes, unsigned char *hash);
        void LIBNETXMS_EXPORTABLE MD5HashForPattern(const unsigned char *data, size_t patternSize, size_t fullSize, BYTE *hash);
    void LIBNETXMS_EXPORTABLE CalculateSHA1Hash(unsigned char *data, size_t nbytes, unsigned char *hash);
index 7186259..e27ff9d 100644 (file)
@@ -357,26 +357,26 @@ public:
 class LIBNXSNMP_EXPORTABLE SNMP_ObjectId
 {
 private:
-   UINT32 m_dwLength;
-   UINT32 *m_pdwValue;
-   TCHAR *m_pszTextValue;
+   UINT32 m_length;
+   UINT32 *m_value;
+   TCHAR *m_textValue;
 
    void convertToText();
 
 public:
    SNMP_ObjectId();
    SNMP_ObjectId(SNMP_ObjectId *src);
-   SNMP_ObjectId(UINT32 dwLength, const UINT32 *pdwValue);
+   SNMP_ObjectId(size_t length, const UINT32 *value);
    ~SNMP_ObjectId();
 
-   UINT32 getLength() { return m_dwLength; }
-   const UINT32 *getValue() { return m_pdwValue; }
-   const TCHAR *getValueAsText() { return CHECK_NULL(m_pszTextValue); }
-   void setValue(UINT32 *pdwValue, UINT32 dwLength);
+   size_t getLength() { return (size_t)m_length; }
+   const UINT32 *getValue() { return m_value; }
+   const TCHAR *getValueAsText() { return CHECK_NULL(m_textValue); }
+   void setValue(UINT32 *value, size_t length);
    void extend(UINT32 subId);
 
-   int compare(const TCHAR *pszOid);
-   int compare(const UINT32 *pdwOid, UINT32 dwLen);
+   int compare(const TCHAR *oid);
+   int compare(const UINT32 *oid, size_t length);
        int compare(SNMP_ObjectId *oid);
 };
 
@@ -386,35 +386,36 @@ public:
 class LIBNXSNMP_EXPORTABLE SNMP_Variable
 {
 private:
-   SNMP_ObjectId *m_pName;
-   UINT32 m_dwType;
-   UINT32 m_dwValueLength;
-   BYTE *m_pValue;
+   SNMP_ObjectId *m_name;
+   UINT32 m_type;
+   size_t m_valueLength;
+   BYTE *m_value;
 
 public:
    SNMP_Variable();
-   SNMP_Variable(const TCHAR *pszName);
-   SNMP_Variable(UINT32 *pdwName, UINT32 dwNameLen);
+   SNMP_Variable(const TCHAR *name);
+   SNMP_Variable(UINT32 *name, size_t nameLen);
+   SNMP_Variable(SNMP_Variable *src);
    ~SNMP_Variable();
 
-   BOOL Parse(BYTE *pData, UINT32 dwVarLength);
-   UINT32 Encode(BYTE *pBuffer, UINT32 dwBufferSize);
+   bool parse(BYTE *data, size_t varLength);
+   size_t encode(BYTE *buffer, size_t bufferSize);
 
-   SNMP_ObjectId *GetName() { return m_pName; }
-   UINT32 GetType() { return m_dwType; }
-   UINT32 GetValueLength() { return m_dwValueLength; }
-   const BYTE *GetValue() { return m_pValue; }
+   SNMP_ObjectId *getName() { return m_name; }
+   UINT32 getType() { return m_type; }
+   size_t getValueLength() { return m_valueLength; }
+   const BYTE *getValue() { return m_value; }
 
        size_t getRawValue(BYTE *buffer, size_t bufSize);
-   UINT32 GetValueAsUInt();
-   LONG GetValueAsInt();
-   TCHAR *getValueAsString(TCHAR *pszBuffer, UINT32 dwBufferSize);
-   TCHAR *getValueAsPrintableString(TCHAR *buffer, UINT32 bufferSize, bool *convertToHex);
-   SNMP_ObjectId *GetValueAsObjectId();
-   TCHAR *GetValueAsMACAddr(TCHAR *pszBuffer);
-   TCHAR *GetValueAsIPAddr(TCHAR *pszBuffer);
-
-   void SetValueFromString(UINT32 dwType, const TCHAR *pszValue);
+   UINT32 getValueAsUInt();
+   LONG getValueAsInt();
+   TCHAR *getValueAsString(TCHAR *buffer, size_t bufferSize);
+   TCHAR *getValueAsPrintableString(TCHAR *buffer, size_t bufferSize, bool *convertToHex);
+   SNMP_ObjectId *getValueAsObjectId();
+   TCHAR *getValueAsMACAddr(TCHAR *buffer);
+   TCHAR *getValueAsIPAddr(TCHAR *buffer);
+
+   void setValueFromString(UINT32 type, const TCHAR *value);
 };
 
 /**
@@ -424,18 +425,18 @@ class LIBNXSNMP_EXPORTABLE SNMP_Engine
 {
 private:
        BYTE m_id[SNMP_MAX_ENGINEID_LEN];
-       int m_idLen;
+       size_t m_idLen;
        int m_engineBoots;
        int m_engineTime;
 
 public:
        SNMP_Engine();
-       SNMP_Engine(BYTE *id, int idLen, int engineBoots = 0, int engineTime = 0);
+       SNMP_Engine(BYTE *id, size_t idLen, int engineBoots = 0, int engineTime = 0);
        SNMP_Engine(SNMP_Engine *src);
        ~SNMP_Engine();
 
        BYTE *getId() { return m_id; }
-       int getIdLen() { return m_idLen; }
+       size_t getIdLen() { return m_idLen; }
        int getBoots() { return m_engineBoots; }
        int getTime() { return m_engineTime; }
 
@@ -512,13 +513,12 @@ public:
 class LIBNXSNMP_EXPORTABLE SNMP_PDU
 {
 private:
-   UINT32 m_dwVersion;
-   UINT32 m_dwCommand;
-   UINT32 m_dwNumVariables;
-   SNMP_Variable **m_ppVarList;
+   UINT32 m_version;
+   UINT32 m_command;
+   ObjectArray<SNMP_Variable> *m_variables;
    SNMP_ObjectId *m_pEnterprise;
-   int m_iTrapType;
-   int m_iSpecificTrap;
+   int m_trapType;
+   int m_specificTrap;
    UINT32 m_dwTimeStamp;
    UINT32 m_dwAgentAddr;
    UINT32 m_dwRqId;
@@ -527,7 +527,7 @@ private:
        UINT32 m_msgId;
        UINT32 m_msgMaxSize;
        BYTE m_contextEngineId[SNMP_MAX_ENGINEID_LEN];
-       int m_contextEngineIdLen;
+       size_t m_contextEngineIdLen;
        char m_contextName[SNMP_MAX_CONTEXT_NAME];
        BYTE m_salt[8];
        bool m_reportable;
@@ -540,37 +540,38 @@ private:
        int m_securityModel;
        BYTE m_signature[12];
 
-   BOOL parseVariable(BYTE *pData, UINT32 dwVarLength);
-   BOOL parseVarBinds(BYTE *pData, UINT32 dwPDULength);
-   BOOL parsePdu(BYTE *pdu, UINT32 pduLength);
-   BOOL parseTrapPDU(BYTE *pData, UINT32 dwPDULength);
-   BOOL parseTrap2PDU(BYTE *pData, UINT32 dwPDULength);
-   BOOL parsePduContent(BYTE *pData, UINT32 dwPDULength);
-   BOOL parseV3Header(BYTE *pData, UINT32 dwPDULength);
-   BOOL parseV3SecurityUsm(BYTE *pData, UINT32 dwPDULength);
-   BOOL parseV3ScopedPdu(BYTE *pData, UINT32 dwPDULength);
-       BOOL validateSignedMessage(BYTE *msg, UINT32 msgLen, SNMP_SecurityContext *securityContext);
-       UINT32 encodeV3Header(BYTE *buffer, UINT32 bufferSize, SNMP_SecurityContext *securityContext);
-       UINT32 encodeV3SecurityParameters(BYTE *buffer, UINT32 bufferSize, SNMP_SecurityContext *securityContext);
-       UINT32 encodeV3ScopedPDU(UINT32 pduType, BYTE *pdu, UINT32 pduSize, BYTE *buffer, UINT32 bufferSize);
-       void signMessage(BYTE *msg, UINT32 msgLen, SNMP_SecurityContext *securityContext);
-       BOOL decryptData(BYTE *data, UINT32 length, BYTE *decryptedData, SNMP_SecurityContext *securityContext);
+   bool parseVariable(BYTE *pData, size_t varLength);
+   bool parseVarBinds(BYTE *pData, size_t pduLength);
+   bool parsePdu(BYTE *pdu, size_t pduLength);
+   bool parseTrapPDU(BYTE *pData, size_t pduLength);
+   bool parseTrap2PDU(BYTE *pData, size_t pduLength);
+   bool parsePduContent(BYTE *pData, size_t pduLength);
+   bool parseV3Header(BYTE *pData, size_t pduLength);
+   bool parseV3SecurityUsm(BYTE *pData, size_t pduLength);
+   bool parseV3ScopedPdu(BYTE *pData, size_t pduLength);
+       bool validateSignedMessage(BYTE *msg, size_t msgLen, SNMP_SecurityContext *securityContext);
+       size_t encodeV3Header(BYTE *buffer, size_t bufferSize, SNMP_SecurityContext *securityContext);
+       size_t encodeV3SecurityParameters(BYTE *buffer, size_t bufferSize, SNMP_SecurityContext *securityContext);
+       size_t encodeV3ScopedPDU(UINT32 pduType, BYTE *pdu, size_t pduSize, BYTE *buffer, size_t bufferSize);
+       void signMessage(BYTE *msg, size_t msgLen, SNMP_SecurityContext *securityContext);
+       bool decryptData(BYTE *data, size_t length, BYTE *decryptedData, SNMP_SecurityContext *securityContext);
 
 public:
    SNMP_PDU();
    SNMP_PDU(UINT32 dwCommand, UINT32 dwRqId, UINT32 dwVersion = SNMP_VERSION_2C);
+   SNMP_PDU(SNMP_PDU *src);
    ~SNMP_PDU();
 
-   BOOL parse(BYTE *pRawData, UINT32 dwRawLength, SNMP_SecurityContext *securityContext, bool engineIdAutoupdate);
-   UINT32 encode(BYTE **ppBuffer, SNMP_SecurityContext *securityContext);
+   bool parse(BYTE *rawData, size_t rawLength, SNMP_SecurityContext *securityContext, bool engineIdAutoupdate);
+   size_t encode(BYTE **ppBuffer, SNMP_SecurityContext *securityContext);
 
-   UINT32 getCommand() { return m_dwCommand; }
+   UINT32 getCommand() { return m_command; }
    SNMP_ObjectId *getTrapId() { return m_pEnterprise; }
-   int getTrapType() { return m_iTrapType; }
-   int getSpecificTrapType() { return m_iSpecificTrap; }
-   UINT32 getNumVariables() { return m_dwNumVariables; }
-   SNMP_Variable *getVariable(UINT32 dwIndex) { return (dwIndex < m_dwNumVariables) ? m_ppVarList[dwIndex] : NULL; }
-   UINT32 getVersion() { return m_dwVersion; }
+   int getTrapType() { return m_trapType; }
+   int getSpecificTrapType() { return m_specificTrap; }
+   int getNumVariables() { return m_variables->size(); }
+   SNMP_Variable *getVariable(int index) { return m_variables->get(index); }
+   UINT32 getVersion() { return m_version; }
    UINT32 getErrorCode() { return m_dwErrorCode; }
 
        void setMessageId(UINT32 msgId) { m_msgId = msgId; }
@@ -588,14 +589,14 @@ public:
    UINT32 getRequestId() { return m_dwRqId; }
    void setRequestId(UINT32 dwId) { m_dwRqId = dwId; }
 
-       void setContextEngineId(BYTE *id, int len);
+       void setContextEngineId(BYTE *id, size_t len);
        void setContextEngineId(const char *id);
        void setContextName(const char *name);
        const char *getContextName() { return m_contextName; }
-       int getContextEngineIdLength() { return m_contextEngineIdLen; }
+       size_t getContextEngineIdLength() { return m_contextEngineIdLen; }
        BYTE *getContextEngineId() { return m_contextEngineId; }
 
-       void unlinkVariables() { safe_free_and_null(m_ppVarList); m_dwNumVariables = 0; }
+   void unlinkVariables() { m_variables->clear(); }
    void bindVariable(SNMP_Variable *pVar);
 };
 
@@ -657,12 +658,12 @@ private:
    SOCKET m_hSocket;
    struct sockaddr_in m_peerAddr;
        bool m_connected;
-   UINT32 m_dwBufferSize;
-   UINT32 m_dwBytesInBuffer;
-   UINT32 m_dwBufferPos;
+   size_t m_dwBufferSize;
+   size_t m_dwBytesInBuffer;
+   size_t m_dwBufferPos;
    BYTE *m_pBuffer;
 
-   UINT32 preParsePDU();
+   size_t preParsePDU();
    int recvData(UINT32 dwTimeout, struct sockaddr *pSender, socklen_t *piAddrSize);
    void clearBuffer();
 
@@ -684,14 +685,14 @@ public:
 /**
  * Functions
  */
-TCHAR LIBNXSNMP_EXPORTABLE *SNMPConvertOIDToText(UINT32 dwLength, const UINT32 *pdwValue, TCHAR *pszBuffer, UINT32 dwBufferSize);
-UINT32 LIBNXSNMP_EXPORTABLE SNMPParseOID(const TCHAR *pszText, UINT32 *pdwBuffer, UINT32 dwBufferSize);
+TCHAR LIBNXSNMP_EXPORTABLE *SNMPConvertOIDToText(size_t length, const UINT32 *value, TCHAR *buffer, size_t bufferSize);
+size_t LIBNXSNMP_EXPORTABLE SNMPParseOID(const TCHAR *text, UINT32 *buffer, size_t bufferSize);
 bool LIBNXSNMP_EXPORTABLE SNMPIsCorrectOID(const TCHAR *oid);
-UINT32 LIBNXSNMP_EXPORTABLE SNMPGetOIDLength(const TCHAR *oid);
+size_t LIBNXSNMP_EXPORTABLE SNMPGetOIDLength(const TCHAR *oid);
 const TCHAR LIBNXSNMP_EXPORTABLE *SNMPGetErrorText(UINT32 dwError);
-UINT32 LIBNXSNMP_EXPORTABLE SNMPSaveMIBTree(const TCHAR *pszFile, SNMP_MIBObject *pRoot, UINT32 dwFlags);
-UINT32 LIBNXSNMP_EXPORTABLE SNMPLoadMIBTree(const TCHAR *pszFile, SNMP_MIBObject **ppRoot);
-UINT32 LIBNXSNMP_EXPORTABLE SNMPGetMIBTreeTimestamp(const TCHAR *pszFile, UINT32 *pdwTimestamp);
+UINT32 LIBNXSNMP_EXPORTABLE SNMPSaveMIBTree(const TCHAR *fileName, SNMP_MIBObject *pRoot, UINT32 dwFlags);
+UINT32 LIBNXSNMP_EXPORTABLE SNMPLoadMIBTree(const TCHAR *fileName, SNMP_MIBObject **ppRoot);
+UINT32 LIBNXSNMP_EXPORTABLE SNMPGetMIBTreeTimestamp(const TCHAR *fileName, UINT32 *pdwTimestamp);
 UINT32 LIBNXSNMP_EXPORTABLE SNMPResolveDataType(const TCHAR *pszType);
 TCHAR LIBNXSNMP_EXPORTABLE *SNMPDataTypeName(UINT32 type, TCHAR *buffer, size_t bufferSize);
 
index 6ba8311..adcae61 100644 (file)
@@ -141,7 +141,7 @@ void InstallService(TCHAR *execName, TCHAR *confFile)
                   execName, confFile, g_windowsServiceName, g_windowsEventSourceName);
    if (g_debugLevel != (UINT32)NXCONFIG_UNINITIALIZED_VALUE)
    {
-      int len = _tcslen(cmdLine);
+      size_t len = _tcslen(cmdLine);
       _sntprintf(&cmdLine[len], 8192 - len, _T(" -D %d"), g_debugLevel);
    }
        
index 5bc12fe..c19b8fd 100644 (file)
@@ -161,38 +161,34 @@ TCHAR LIBNETXMS_EXPORTABLE *Ip6ToStr(BYTE *addr, TCHAR *buffer)
 /**
  * Duplicate memory block
  */
-void LIBNETXMS_EXPORTABLE *nx_memdup(const void *pData, UINT32 dwSize)
+void LIBNETXMS_EXPORTABLE *nx_memdup(const void *data, size_t size)
 {
-   void *pNewData;
+   void *newData;
 
-   pNewData = malloc(dwSize);
-   memcpy(pNewData, pData, dwSize);
-   return pNewData;
+   newData = malloc(size);
+   memcpy(newData, data, size);
+   return newData;
 }
 
-
-//
-// Swap two memory blocks
-//
-
-void LIBNETXMS_EXPORTABLE nx_memswap(void *pBlock1, void *pBlock2, UINT32 dwSize)
+/**
+ * Swap two memory blocks
+ */
+void LIBNETXMS_EXPORTABLE nx_memswap(void *block1, void *block2, size_t size)
 {
-   void *pTemp;
+   void *temp;
 
-   pTemp = malloc(dwSize);
-   memcpy(pTemp, pBlock1, dwSize);
-   memcpy(pBlock1, pBlock2, dwSize);
-   memcpy(pBlock2, pTemp, dwSize);
-   free(pTemp);
+   temp = malloc(size);
+   memcpy(temp, block1, size);
+   memcpy(block1, block2, size);
+   memcpy(block2, temp, size);
+   free(temp);
 }
 
-
-//
-// Copy string
-//
-
 #if defined(_WIN32) && defined(USE_WIN32_HEAP)
 
+/**
+ * Copy string
+ */
 char LIBNETXMS_EXPORTABLE *nx_strdup(const char *src)
 {
        char *newStr = (char *)malloc(strlen(src) + 1);
@@ -200,6 +196,9 @@ char LIBNETXMS_EXPORTABLE *nx_strdup(const char *src)
        return newStr;
 }
 
+/**
+ * Copy string
+ */
 WCHAR LIBNETXMS_EXPORTABLE *nx_wcsdup(const WCHAR *src)
 {
        WCHAR *newStr = (WCHAR *)malloc((wcslen(src) + 1) * sizeof(WCHAR));
@@ -211,6 +210,9 @@ WCHAR LIBNETXMS_EXPORTABLE *nx_wcsdup(const WCHAR *src)
 
 #if !HAVE_WCSDUP && !defined(_WIN32)
 
+/**
+ * Copy string
+ */
 WCHAR LIBNETXMS_EXPORTABLE *wcsdup(const WCHAR *src)
 {
        return (WCHAR *)nx_memdup(src, (wcslen(src) + 1) * sizeof(WCHAR));
@@ -701,12 +703,12 @@ TCHAR LIBNETXMS_EXPORTABLE *MACToStr(const BYTE *pData, TCHAR *pStr)
 /**
  * Convert byte array to text representation (wide character version)
  */
-WCHAR LIBNETXMS_EXPORTABLE *BinToStrW(const BYTE *pData, UINT32 dwSize, WCHAR *pStr)
+WCHAR LIBNETXMS_EXPORTABLE *BinToStrW(const BYTE *pData, size_t size, WCHAR *pStr)
 {
-   UINT32 i;
+   size_t i;
    WCHAR *pCurr;
 
-   for(i = 0, pCurr = pStr; i < dwSize; i++)
+   for(i = 0, pCurr = pStr; i < size; i++)
    {
       *pCurr++ = bin2hex(pData[i] >> 4);
       *pCurr++ = bin2hex(pData[i] & 15);
@@ -718,12 +720,12 @@ WCHAR LIBNETXMS_EXPORTABLE *BinToStrW(const BYTE *pData, UINT32 dwSize, WCHAR *p
 /**
  * Convert byte array to text representation (multibyte character version)
  */
-char LIBNETXMS_EXPORTABLE *BinToStrA(const BYTE *pData, UINT32 dwSize, char *pStr)
+char LIBNETXMS_EXPORTABLE *BinToStrA(const BYTE *pData, size_t size, char *pStr)
 {
-   UINT32 i;
+   size_t i;
    char *pCurr;
 
-   for(i = 0, pCurr = pStr; i < dwSize; i++)
+   for(i = 0, pCurr = pStr; i < size; i++)
    {
       *pCurr++ = bin2hex(pData[i] >> 4);
       *pCurr++ = bin2hex(pData[i] & 15);
@@ -736,13 +738,13 @@ char LIBNETXMS_EXPORTABLE *BinToStrA(const BYTE *pData, UINT32 dwSize, char *pSt
  * Convert string of hexadecimal digits to byte array (wide character version)
  * Returns number of bytes written to destination
  */
-UINT32 LIBNETXMS_EXPORTABLE StrToBinW(const WCHAR *pStr, BYTE *pData, UINT32 dwSize)
+UINT32 LIBNETXMS_EXPORTABLE StrToBinW(const WCHAR *pStr, BYTE *pData, UINT32 size)
 {
    UINT32 i;
    const WCHAR *pCurr;
 
-   memset(pData, 0, dwSize);
-   for(i = 0, pCurr = pStr; (i < dwSize) && (*pCurr != 0); i++)
+   memset(pData, 0, size);
+   for(i = 0, pCurr = pStr; (i < size) && (*pCurr != 0); i++)
    {
       pData[i] = hex2bin(*pCurr) << 4;
       pCurr++;
@@ -759,13 +761,13 @@ UINT32 LIBNETXMS_EXPORTABLE StrToBinW(const WCHAR *pStr, BYTE *pData, UINT32 dwS
  * Convert string of hexadecimal digits to byte array (multibyte character version)
  * Returns number of bytes written to destination
  */
-UINT32 LIBNETXMS_EXPORTABLE StrToBinA(const char *pStr, BYTE *pData, UINT32 dwSize)
+UINT32 LIBNETXMS_EXPORTABLE StrToBinA(const char *pStr, BYTE *pData, UINT32 size)
 {
    UINT32 i;
    const char *pCurr;
 
-   memset(pData, 0, dwSize);
-   for(i = 0, pCurr = pStr; (i < dwSize) && (*pCurr != 0); i++)
+   memset(pData, 0, size);
+   for(i = 0, pCurr = pStr; (i < size) && (*pCurr != 0); i++)
    {
       pData[i] = hex2bin(*pCurr) << 4;
       pCurr++;
index b05cd7b..4d1c029 100644 (file)
@@ -1,6 +1,6 @@
 /* 
 ** NetXMS - Network Management System
-** Copyright (C) 2003-2011 Victor Kirhenshtein
+** Copyright (C) 2003-2014 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
 
 #include "nxcore.h"
 
-
-//
-// Map port numbers from dot1dBasePortTable to interface indexes
-//
-
+/**
+ * Map port numbers from dot1dBasePortTable to interface indexes
+ */
 static UINT32 PortMapCallback(UINT32 snmpVersion, SNMP_Variable *var, SNMP_Transport *transport, void *arg)
 {
    TCHAR oid[MAX_OID_LEN * 4], suffix[MAX_OID_LEN * 4];
-   SNMP_ObjectId *pOid = var->GetName();
+   SNMP_ObjectId *pOid = var->getName();
    SNMPConvertOIDToText(pOid->getLength() - 11, (UINT32 *)&(pOid->getValue())[11], suffix, MAX_OID_LEN * 4);
 
        // Get interface index
@@ -45,12 +43,12 @@ static UINT32 PortMapCallback(UINT32 snmpVersion, SNMP_Variable *var, SNMP_Trans
 
        if (rcc == SNMP_ERR_SUCCESS)
    {
-               UINT32 ifIndex = pRespPDU->getVariable(0)->GetValueAsUInt();
+               UINT32 ifIndex = pRespPDU->getVariable(0)->getValueAsUInt();
                InterfaceList *ifList = (InterfaceList *)arg;
                for(int i = 0; i < ifList->getSize(); i++)
                        if (ifList->get(i)->dwIndex == ifIndex)
                        {
-                               ifList->get(i)->dwBridgePortNumber = var->GetValueAsUInt();
+                               ifList->get(i)->dwBridgePortNumber = var->getValueAsUInt();
                                break;
                        }
       delete pRespPDU;
index b7b96d1..d00125c 100644 (file)
@@ -28,7 +28,7 @@
 static UINT32 CDPTopoHandler(UINT32 snmpVersion, SNMP_Variable *var, SNMP_Transport *transport, void *arg)
 {
        Node *node = (Node *)((LinkLayerNeighbors *)arg)->getData();
-       SNMP_ObjectId *oid = var->GetName();
+       SNMP_ObjectId *oid = var->getName();
 
        UINT32 remoteIp;
        var->getRawValue((BYTE *)&remoteIp, sizeof(UINT32));
index 8155ae6..521238d 100644 (file)
@@ -180,7 +180,7 @@ UINT32 Component::fillMessage(CSCPMessage *msg, UINT32 baseId)
 static UINT32 EntityWalker(UINT32 snmpVersion, SNMP_Variable *var, SNMP_Transport *transport, void *arg)
 {
        TCHAR buffer[256];
-       Component *element = new Component(var->GetName()->getValue()[12], var->getValueAsString(buffer, 256));
+       Component *element = new Component(var->getName()->getValue()[12], var->getValueAsString(buffer, 256));
        UINT32 rc = element->updateFromSnmp(transport);
        if (rc != SNMP_ERR_SUCCESS)
        {
index eae71eb..fdc66b2 100644 (file)
@@ -686,7 +686,7 @@ void DCTable::createMessage(CSCPMessage *pMsg)
                pMsg->SetVariable(varId++, column->getFlags());
                SNMP_ObjectId *oid = column->getSnmpOid();
                if (oid != NULL)
-                       pMsg->setFieldInt32Array(varId++, oid->getLength(), oid->getValue());
+                       pMsg->setFieldInt32Array(varId++, (UINT32)oid->getLength(), oid->getValue());
                else
                        varId++;
                pMsg->SetVariable(varId++, column->getDisplayName());
index a4e191f..eb6f40a 100644 (file)
@@ -79,7 +79,7 @@ DCTableColumn::DCTableColumn(DB_RESULT hResult, int row)
        if (oid[0] != 0)
        {
                UINT32 oidBin[256];
-               UINT32 len = SNMPParseOID(oid, oidBin, 256);
+               size_t len = SNMPParseOID(oid, oidBin, 256);
                if (len > 0)
                {
                        m_snmpOid = new SNMP_ObjectId(len, oidBin);
@@ -108,7 +108,7 @@ DCTableColumn::DCTableColumn(ConfigEntry *e)
    if ((oid != NULL) && (*oid != 0))
    {
                UINT32 oidBin[256];
-               UINT32 len = SNMPParseOID(oid, oidBin, 256);
+               size_t len = SNMPParseOID(oid, oidBin, 256);
                if (len > 0)
                {
                        m_snmpOid = new SNMP_ObjectId(len, oidBin);
index 2fc67d7..574b0bc 100644 (file)
@@ -183,8 +183,8 @@ void ForwardingDatabase::sort()
  */
 static UINT32 FDBHandler(UINT32 dwVersion, SNMP_Variable *pVar, SNMP_Transport *pTransport, void *arg)
 {
-   SNMP_ObjectId *pOid = pVar->GetName();
-       UINT32 oidLen = pOid->getLength();
+   SNMP_ObjectId *pOid = pVar->getName();
+       size_t oidLen = pOid->getLength();
        UINT32 oid[MAX_OID_LEN];
        memcpy(oid, pOid->getValue(), oidLen * sizeof(UINT32));
 
@@ -207,8 +207,8 @@ static UINT32 FDBHandler(UINT32 dwVersion, SNMP_Variable *pVar, SNMP_Transport *
       SNMP_Variable *varStatus = pRespPDU->getVariable(1);
       if (varPort != NULL && varStatus != NULL)
       {
-         int port = varPort->GetValueAsInt();
-         int status = varStatus->GetValueAsInt();
+         int port = varPort->getValueAsInt();
+         int status = varStatus->getValueAsInt();
          if ((port > 0) && (status == 3))              // status 3 == learned
          {
             FDB_ENTRY entry;
@@ -232,12 +232,12 @@ static UINT32 FDBHandler(UINT32 dwVersion, SNMP_Variable *pVar, SNMP_Transport *
  */
 static UINT32 Dot1qTpFdbHandler(UINT32 dwVersion, SNMP_Variable *pVar, SNMP_Transport *pTransport, void *arg)
 {
-       int port = pVar->GetValueAsInt();
+       int port = pVar->getValueAsInt();
        if (port == 0)
                return SNMP_ERR_SUCCESS;
 
-   SNMP_ObjectId *pOid = pVar->GetName();
-       UINT32 oidLen = pOid->getLength();
+   SNMP_ObjectId *pOid = pVar->getName();
+       size_t oidLen = pOid->getLength();
        UINT32 oid[MAX_OID_LEN];
        memcpy(oid, pOid->getValue(), oidLen * sizeof(UINT32));
 
@@ -253,14 +253,14 @@ static UINT32 Dot1qTpFdbHandler(UINT32 dwVersion, SNMP_Variable *pVar, SNMP_Tran
 
        if (rcc == SNMP_ERR_SUCCESS)
    {
-               int status = pRespPDU->getVariable(0)->GetValueAsInt();
+               int status = pRespPDU->getVariable(0)->getValueAsInt();
                if (status == 3)        // status 3 == learned
                {
                        FDB_ENTRY entry;
 
                        memset(&entry, 0, sizeof(FDB_ENTRY));
                        entry.port = (UINT32)port;
-                       for(UINT32 i = oidLen - MAC_ADDR_LENGTH, j = 0; i < oidLen; i++)
+                       for(size_t i = oidLen - MAC_ADDR_LENGTH, j = 0; i < oidLen; i++)
                                entry.macAddr[j++] = (BYTE)oid[i];
                        Node *node = FindNodeByMAC(entry.macAddr);
                        entry.nodeObject = (node != NULL) ? node->Id() : 0;
@@ -277,10 +277,10 @@ static UINT32 Dot1qTpFdbHandler(UINT32 dwVersion, SNMP_Variable *pVar, SNMP_Tran
  */
 static UINT32 Dot1dPortTableHandler(UINT32 dwVersion, SNMP_Variable *pVar, SNMP_Transport *pTransport, void *arg)
 {
-   SNMP_ObjectId *pOid = pVar->GetName();
+   SNMP_ObjectId *pOid = pVar->getName();
        PORT_MAPPING_ENTRY pm;
        pm.port = pOid->getValue()[pOid->getLength() - 1];
-       pm.ifIndex = pVar->GetValueAsUInt();
+       pm.ifIndex = pVar->getValueAsUInt();
        ((ForwardingDatabase *)arg)->addPortMapping(&pm);
        return SNMP_ERR_SUCCESS;
 }
index f4f7549..ad28510 100644 (file)
@@ -286,7 +286,7 @@ static UINT32 ImportTrap(ConfigEntry *trap)
        nx_strncpy(tc.szUserTag, trap->getSubEntryValue(_T("userTag"), 0, _T("")), MAX_USERTAG_LENGTH);
 
        UINT32 oid[256];
-       tc.dwOidLen = SNMPParseOID(trap->getSubEntryValue(_T("oid"), 0, _T("")), oid, 256);
+       tc.dwOidLen = (UINT32)SNMPParseOID(trap->getSubEntryValue(_T("oid"), 0, _T("")), oid, 256);
        tc.pdwObjectId = oid;
        if (tc.dwOidLen == 0)
                return RCC_INTERNAL_ERROR;
@@ -314,7 +314,7 @@ static UINT32 ImportTrap(ConfigEntry *trap)
                                {
                                        // OID parameter
                                        UINT32 temp[256];
-                                       tc.pMaps[i].dwOidLen = SNMPParseOID(parameter->getSubEntryValue(_T("oid"), 0, _T("")), temp, 256);
+                                       tc.pMaps[i].dwOidLen = (UINT32)SNMPParseOID(parameter->getSubEntryValue(_T("oid"), 0, _T("")), temp, 256);
                                        tc.pMaps[i].pdwObjectId = (UINT32 *)nx_memdup(temp, sizeof(UINT32) * tc.pMaps[i].dwOidLen);
                                }
                                nx_strncpy(tc.pMaps[i].szDescription, parameter->getSubEntryValue(_T("description"), 0, _T("")), MAX_DB_STRING);
index 8ba2d84..deca152 100644 (file)
 static UINT32 PortLocalInfoHandler(UINT32 snmpVersion, SNMP_Variable *var, SNMP_Transport *transport, void *arg)
 {
        LLDP_LOCAL_PORT_INFO *port = new LLDP_LOCAL_PORT_INFO;
-   port->portNumber = var->GetName()->getValue()[11];
+   port->portNumber = var->getName()->getValue()[11];
        port->localIdLen = var->getRawValue(port->localId, 256);
 
-       SNMP_ObjectId *oid = var->GetName();
+       SNMP_ObjectId *oid = var->getName();
        UINT32 newOid[128];
        memcpy(newOid, oid->getValue(), oid->getLength() * sizeof(UINT32));
    SNMP_PDU *pRqPDU = new SNMP_PDU(SNMP_GET_REQUEST, SnmpNewRequestId(), snmpVersion);
@@ -146,7 +146,7 @@ static UINT32 LLDPTopoHandler(UINT32 snmpVersion, SNMP_Variable *var, SNMP_Trans
 {
        LinkLayerNeighbors *nbs = (LinkLayerNeighbors *)arg;
        Node *node = (Node *)nbs->getData();
-       SNMP_ObjectId *oid = var->GetName();
+       SNMP_ObjectId *oid = var->getName();
 
        // Get additional info for current record
        UINT32 newOid[128];
@@ -172,7 +172,7 @@ static UINT32 LLDPTopoHandler(UINT32 snmpVersion, SNMP_Variable *var, SNMP_Trans
    {
                // Build LLDP ID for remote system
                TCHAR remoteId[256];
-      BuildLldpId(pRespPDU->getVariable(0)->GetValueAsInt(), var->GetValue(), var->GetValueLength(), remoteId, 256);
+      BuildLldpId(pRespPDU->getVariable(0)->getValueAsInt(), var->getValue(), (int)var->getValueLength(), remoteId, 256);
                Node *remoteNode = FindNodeByLLDPId(remoteId);
                if (remoteNode != NULL)
                {
@@ -180,7 +180,7 @@ static UINT32 LLDPTopoHandler(UINT32 snmpVersion, SNMP_Variable *var, SNMP_Trans
 
                        BYTE remoteIfId[1024];
                        size_t remoteIfIdLen = pRespPDU->getVariable(1)->getRawValue(remoteIfId, 1024);
-                       Interface *ifRemote = FindRemoteInterface(remoteNode, pRespPDU->getVariable(2)->GetValueAsUInt(), remoteIfId, remoteIfIdLen, nbs);
+                       Interface *ifRemote = FindRemoteInterface(remoteNode, pRespPDU->getVariable(2)->getValueAsUInt(), remoteIfId, remoteIfIdLen, nbs);
          if (ifRemote == NULL)
          {
             // Try to find remote interface by description
index ea590ef..371da25 100644 (file)
@@ -41,7 +41,7 @@ static WORD ReadRemoteSlotAndPort(Node *node, SNMP_ObjectId *oid, UINT32 snmpVer
        SNMP_PDU *pRespPDU = NULL;
    UINT32 rcc = transport->doRequest(pRqPDU, &pRespPDU, g_dwSNMPTimeout, 3);
        delete pRqPDU;
-       if ((rcc == SNMP_ERR_SUCCESS) && (pRespPDU->getNumVariables() > 0) && (pRespPDU->getVariable(0)->GetType() == ASN_OCTET_STRING))
+       if ((rcc == SNMP_ERR_SUCCESS) && (pRespPDU->getNumVariables() > 0) && (pRespPDU->getVariable(0)->getType() == ASN_OCTET_STRING))
    {
                BYTE eosEntry[128];
                pRespPDU->getVariable(0)->getRawValue(eosEntry, 128);
@@ -57,7 +57,7 @@ static WORD ReadRemoteSlotAndPort(Node *node, SNMP_ObjectId *oid, UINT32 snmpVer
 static UINT32 NDPTopoHandler(UINT32 snmpVersion, SNMP_Variable *var, SNMP_Transport *transport, void *arg)
 {
        Node *node = (Node *)((LinkLayerNeighbors *)arg)->getData();
-       SNMP_ObjectId *oid = var->GetName();
+       SNMP_ObjectId *oid = var->getName();
 
        // Entries indexed by slot, port, IP address, and segment ID
        UINT32 slot = oid->getValue()[14];
index a8fa688..a553c4b 100644 (file)
@@ -3067,7 +3067,7 @@ UINT32 Node::getItemFromSNMP(WORD port, const TCHAR *szParam, UINT32 dwBufSize,
 /**
  * Read one row for SNMP table
  */
-static UINT32 ReadSNMPTableRow(SNMP_Transport *snmp, SNMP_ObjectId *rowOid, UINT32 baseOidLen, UINT32 index,
+static UINT32 ReadSNMPTableRow(SNMP_Transport *snmp, SNMP_ObjectId *rowOid, size_t baseOidLen, UINT32 index,
                                ObjectArray<DCTableColumn> *columns, Table *table)
 {
    SNMP_PDU request(SNMP_GET_REQUEST, SnmpNewRequestId(), snmp->getSnmpVersion());
@@ -3077,11 +3077,11 @@ static UINT32 ReadSNMPTableRow(SNMP_Transport *snmp, SNMP_ObjectId *rowOid, UINT
       if (c->getSnmpOid() != NULL)
       {
          UINT32 oid[MAX_OID_LEN];
-         UINT32 oidLen = c->getSnmpOid()->getLength();
+         size_t oidLen = c->getSnmpOid()->getLength();
          memcpy(oid, c->getSnmpOid()->getValue(), oidLen * sizeof(UINT32));
          if (rowOid != NULL)
          {
-            UINT32 suffixLen = rowOid->getLength() - baseOidLen;
+            size_t suffixLen = rowOid->getLength() - baseOidLen;
             memcpy(&oid[oidLen], rowOid->getValue() + baseOidLen, suffixLen * sizeof(UINT32));
             oidLen += suffixLen;
          }
@@ -3101,10 +3101,10 @@ static UINT32 ReadSNMPTableRow(SNMP_Transport *snmp, SNMP_ObjectId *rowOid, UINT
           (response->getErrorCode() == SNMP_PDU_ERR_SUCCESS))
       {
          table->addRow();
-         for(UINT32 i = 0; i < response->getNumVariables(); i++)
+         for(int i = 0; i < response->getNumVariables(); i++)
          {
             SNMP_Variable *v = response->getVariable(i);
-            if ((v != NULL) && (v->GetType() != ASN_NO_SUCH_OBJECT) && (v->GetType() != ASN_NO_SUCH_INSTANCE))
+            if ((v != NULL) && (v->getType() != ASN_NO_SUCH_OBJECT) && (v->getType() != ASN_NO_SUCH_INSTANCE))
             {
                bool convert = false;
                TCHAR buffer[256];
@@ -3122,7 +3122,7 @@ static UINT32 ReadSNMPTableRow(SNMP_Transport *snmp, SNMP_ObjectId *rowOid, UINT
  */
 static UINT32 SNMPGetTableCallback(UINT32 snmpVersion, SNMP_Variable *varbind, SNMP_Transport *snmp, void *arg)
 {
-   ((ObjectArray<SNMP_ObjectId> *)arg)->add(new SNMP_ObjectId(varbind->GetName()));
+   ((ObjectArray<SNMP_ObjectId> *)arg)->add(new SNMP_ObjectId(varbind->getName()));
    return SNMP_ERR_SUCCESS;
 }
 
@@ -3149,7 +3149,7 @@ UINT32 Node::getTableFromSNMP(WORD port, const TCHAR *oid, ObjectArray<DCTableCo
             (*table)->addColumn(c->getName(), c->getDataType(), c->getDisplayName(), c->isInstanceColumn());
       }
 
-      UINT32 baseOidLen = SNMPGetOIDLength(oid);
+      size_t baseOidLen = SNMPGetOIDLength(oid);
       for(int i = 0; i < oidList.size(); i++)
       {
          rc = ReadSNMPTableRow(snmp, oidList.get(i), baseOidLen, 0, columns, *table);
@@ -3198,7 +3198,7 @@ UINT32 Node::getListFromSNMP(WORD port, const TCHAR *oid, StringList **list)
  */
 struct SNMPOIDSuffixListCallback_Data
 {
-   UINT32 oidLen;
+   size_t oidLen;
    StringList *values;
 };
 
@@ -3208,7 +3208,7 @@ struct SNMPOIDSuffixListCallback_Data
 static UINT32 SNMPOIDSuffixListCallback(UINT32 snmpVersion, SNMP_Variable *varbind, SNMP_Transport *snmp, void *arg)
 {
    SNMPOIDSuffixListCallback_Data *data = (SNMPOIDSuffixListCallback_Data *)arg;
-   SNMP_ObjectId *oid = varbind->GetName();
+   SNMP_ObjectId *oid = varbind->getName();
    if (oid->getLength() <= data->oidLen)
       return SNMP_ERR_SUCCESS;
    TCHAR buffer[256];
index 70169b2..9ee826c 100644 (file)
@@ -678,11 +678,11 @@ NXSL_Value *NXSL_SNMPVarBindClass::getAttr(NXSL_Object *object, const TCHAR *att
        SNMP_Variable *t = (SNMP_Variable *)object->getData();
        if (!_tcscmp(attr, _T("type")))
        {
-               value = new NXSL_Value((UINT32)t->GetType());
+               value = new NXSL_Value((UINT32)t->getType());
        }
        else if (!_tcscmp(attr, _T("name")))
        {
-               value = new NXSL_Value(t->GetName()->getValueAsText());
+               value = new NXSL_Value(t->getName()->getValueAsText());
        }
        else if (!_tcscmp(attr, _T("value")))
        {
@@ -699,13 +699,13 @@ NXSL_Value *NXSL_SNMPVarBindClass::getAttr(NXSL_Object *object, const TCHAR *att
        else if (!_tcscmp(attr, _T("valueAsIp")))
        {
        TCHAR strValue[128];
-               t->GetValueAsIPAddr(strValue);
+               t->getValueAsIPAddr(strValue);
                value = new NXSL_Value(strValue);
        }
        else if (!_tcscmp(attr, _T("valueAsMac")))
        {
        TCHAR strValue[128];
-               t->GetValueAsMACAddr(strValue);
+               t->getValueAsMACAddr(strValue);
                value = new NXSL_Value(strValue);
        }
 
index 19675c6..026eaa1 100644 (file)
@@ -873,7 +873,7 @@ static int F_SNMPGet(int argc, NXSL_Value **argv, NXSL_Value **ppResult, NXSL_VM
 {
        UINT32 len;
        static UINT32 requestId = 1;
-       UINT32 nameLen, varName[MAX_OID_LEN], result = SNMP_ERR_SUCCESS;
+       UINT32 varName[MAX_OID_LEN], result = SNMP_ERR_SUCCESS;
 
        if (!argv[0]->isObject())
                return NXSL_ERR_NOT_OBJECT;
@@ -887,7 +887,7 @@ static int F_SNMPGet(int argc, NXSL_Value **argv, NXSL_Value **ppResult, NXSL_VM
        SNMP_Transport *trans = (SNMP_Transport*)obj->getData();
 
    // Create PDU and send request
-   nameLen = SNMPParseOID(argv[1]->getValueAsString(&len), varName, MAX_OID_LEN);
+   size_t nameLen = SNMPParseOID(argv[1]->getValueAsString(&len), varName, MAX_OID_LEN);
    if (nameLen == 0)
                return NXSL_ERR_BAD_CONDITION;
 
@@ -994,7 +994,7 @@ static int F_SNMPSet(int argc, NXSL_Value **argv, NXSL_Value **ppResult, NXSL_VM
                SNMP_Variable *var = new SNMP_Variable(argv[1]->getValueAsString(&len));
                if (argc == 3)
                {
-                       var->SetValueFromString(ASN_OCTET_STRING, argv[2]->getValueAsString(&len));
+                       var->setValueFromString(ASN_OCTET_STRING, argv[2]->getValueAsString(&len));
                }
                else
                {
@@ -1005,7 +1005,7 @@ static int F_SNMPSet(int argc, NXSL_Value **argv, NXSL_Value **ppResult, NXSL_VM
                                        argv[3]->getValueAsString(&len));
                                dataType = ASN_OCTET_STRING;
                        }
-                       var->SetValueFromString(dataType, argv[2]->getValueAsString(&len));
+                       var->setValueFromString(dataType, argv[2]->getValueAsString(&len));
                }
                request->bindVariable(var);
        }
@@ -1055,7 +1055,8 @@ finish:
 static int F_SNMPWalk(int argc, NXSL_Value **argv, NXSL_Value **ppResult, NXSL_VM *vm)
 {
        static UINT32 requestId = 1;
-       UINT32 rootName[MAX_OID_LEN], rootNameLen, name[MAX_OID_LEN], nameLen, result;
+       UINT32 rootName[MAX_OID_LEN], name[MAX_OID_LEN], result;
+   size_t rootNameLen, nameLen;
        SNMP_PDU *rqPDU, *rspPDU;
        BOOL isRunning = TRUE;
        int i = 0;
@@ -1072,7 +1073,7 @@ static int F_SNMPWalk(int argc, NXSL_Value **argv, NXSL_Value **ppResult, NXSL_V
        SNMP_Transport *trans = (SNMP_Transport*)obj->getData();
 
    // Get root
-   rootNameLen = SNMPParseOID(argv[1]->getValueAsString(&rootNameLen), rootName, MAX_OID_LEN);
+   rootNameLen = SNMPParseOID(argv[1]->getValueAsCString(), rootName, MAX_OID_LEN);
    if (rootNameLen == 0)
       return SNMP_ERR_BAD_OID;
 
@@ -1095,22 +1096,22 @@ static int F_SNMPWalk(int argc, NXSL_Value **argv, NXSL_Value **ppResult, NXSL_V
              (rspPDU->getErrorCode() == SNMP_PDU_ERR_SUCCESS))
          {
             SNMP_Variable *var = rspPDU->getVariable(0);
-            if ((var->GetType() != ASN_NO_SUCH_OBJECT) &&
-                (var->GetType() != ASN_NO_SUCH_INSTANCE))
+            if ((var->getType() != ASN_NO_SUCH_OBJECT) &&
+                (var->getType() != ASN_NO_SUCH_INSTANCE))
             {
                // Do we have to stop walking?
-               if ((var->GetName()->getLength() < rootNameLen) ||
-                   (memcmp(rootName, var->GetName()->getValue(), rootNameLen * sizeof(UINT32))) ||
-                   ((var->GetName()->getLength() == nameLen) &&
-                    (!memcmp(var->GetName()->getValue(), name, var->GetName()->getLength() * sizeof(UINT32)))))
+               if ((var->getName()->getLength() < rootNameLen) ||
+                   (memcmp(rootName, var->getName()->getValue(), rootNameLen * sizeof(UINT32))) ||
+                   ((var->getName()->getLength() == nameLen) &&
+                    (!memcmp(var->getName()->getValue(), name, var->getName()->getLength() * sizeof(UINT32)))))
                {
                   isRunning = FALSE;
                   delete rspPDU;
                   delete rqPDU;
                   break;
                }
-               memcpy(name, var->GetName()->getValue(), var->GetName()->getLength() * sizeof(UINT32));
-               nameLen = var->GetName()->getLength();
+               memcpy(name, var->getName()->getValue(), var->getName()->getLength() * sizeof(UINT32));
+               nameLen = var->getName()->getLength();
                                        varList->set(i++, new NXSL_Value(new NXSL_Object(&g_nxslSnmpVarBindClass, var)));
                                        rspPDU->unlinkVariables();
             }
index 746736e..35e5adc 100644 (file)
@@ -266,13 +266,13 @@ static void AddSNMPResult(Table *table, int column, SNMP_Variable *pVar,
       switch(nFmt)
       {
          case CFMT_MAC_ADDR:
-            pVar->GetValueAsMACAddr(szBuffer);
+            pVar->getValueAsMACAddr(szBuffer);
             break;
          case CFMT_IP_ADDR:
-            pVar->GetValueAsIPAddr(szBuffer);
+            pVar->getValueAsIPAddr(szBuffer);
             break;
          case CFMT_IFINDEX:   // Column is an interface index, convert to interface name
-            dwIndex = pVar->GetValueAsUInt();
+            dwIndex = pVar->getValueAsUInt();
             pInterface = pNode->findInterface(dwIndex, INADDR_ANY);
             if (pInterface != NULL)
             {
@@ -309,21 +309,22 @@ static UINT32 TableHandler(UINT32 dwVersion, SNMP_Variable *pVar,
 {
    TCHAR szOid[MAX_OID_LEN * 4], szSuffix[MAX_OID_LEN * 4];
    SNMP_PDU *pRqPDU, *pRespPDU;
-   UINT32 i, dwResult, dwNameLen, pdwVarName[MAX_OID_LEN];
+   UINT32 i, dwResult, pdwVarName[MAX_OID_LEN];
+   size_t nameLen;
 
    // Create index (OID suffix) for columns
    if (((SNMP_ENUM_ARGS *)pArg)->dwFlags & TF_SNMP_INDEXED_BY_VALUE)
    {
-      _sntprintf(szSuffix, MAX_OID_LEN * 4, _T(".%u"), pVar->GetValueAsUInt());
+      _sntprintf(szSuffix, MAX_OID_LEN * 4, _T(".%u"), pVar->getValueAsUInt());
    }
    else
    {
       SNMP_ObjectId *pOid;
 
-      dwNameLen = SNMPParseOID(((SNMP_ENUM_ARGS *)pArg)->ppszOidList[0], pdwVarName, MAX_OID_LEN);
-      pOid = pVar->GetName();
-      SNMPConvertOIDToText(pOid->getLength() - dwNameLen,
-         (UINT32 *)&(pOid->getValue())[dwNameLen], szSuffix, MAX_OID_LEN * 4);
+      nameLen = SNMPParseOID(((SNMP_ENUM_ARGS *)pArg)->ppszOidList[0], pdwVarName, MAX_OID_LEN);
+      pOid = pVar->getName();
+      SNMPConvertOIDToText(pOid->getLength() - nameLen,
+         (UINT32 *)&(pOid->getValue())[nameLen], szSuffix, MAX_OID_LEN * 4);
    }
 
    // Get values for other columns
@@ -332,10 +333,10 @@ static UINT32 TableHandler(UINT32 dwVersion, SNMP_Variable *pVar,
    {
       _tcscpy(szOid, ((SNMP_ENUM_ARGS *)pArg)->ppszOidList[i]);
       _tcscat(szOid, szSuffix);
-      dwNameLen = SNMPParseOID(szOid, pdwVarName, MAX_OID_LEN);
-      if (dwNameLen != 0)
+      nameLen = SNMPParseOID(szOid, pdwVarName, MAX_OID_LEN);
+      if (nameLen != 0)
       {
-         pRqPDU->bindVariable(new SNMP_Variable(pdwVarName, dwNameLen));
+         pRqPDU->bindVariable(new SNMP_Variable(pdwVarName, nameLen));
       }
    }
 
index 521ee46..32fb7d7 100644 (file)
@@ -8307,8 +8307,8 @@ static UINT32 WalkerCallback(UINT32 dwVersion, SNMP_Variable *pVar, SNMP_Transpo
        bool convertToHex = true;
 
        pVar->getValueAsPrintableString(szBuffer, 4096, &convertToHex);
-   pMsg->SetVariable(((WALKER_ENUM_CALLBACK_ARGS *)pArg)->dwId++, (TCHAR *)pVar->GetName()->getValueAsText());
-       pMsg->SetVariable(((WALKER_ENUM_CALLBACK_ARGS *)pArg)->dwId++, convertToHex ? (UINT32)0xFFFF : pVar->GetType());
+   pMsg->SetVariable(((WALKER_ENUM_CALLBACK_ARGS *)pArg)->dwId++, (TCHAR *)pVar->getName()->getValueAsText());
+       pMsg->SetVariable(((WALKER_ENUM_CALLBACK_ARGS *)pArg)->dwId++, convertToHex ? (UINT32)0xFFFF : pVar->getType());
    pMsg->SetVariable(((WALKER_ENUM_CALLBACK_ARGS *)pArg)->dwId++, szBuffer);
    ((WALKER_ENUM_CALLBACK_ARGS *)pArg)->dwNumVars++;
    if (((WALKER_ENUM_CALLBACK_ARGS *)pArg)->dwNumVars == 50)
index 6580fd6..8093983 100644 (file)
@@ -31,8 +31,8 @@ static UINT32 HandlerArp(UINT32 dwVersion, SNMP_Variable *pVar, SNMP_Transport *
    BYTE bMac[64];
    UINT32 dwResult;
 
-   dwNameLen = pVar->GetName()->getLength();
-   memcpy(oidName, pVar->GetName()->getValue(), dwNameLen * sizeof(UINT32));
+   dwNameLen = pVar->getName()->getLength();
+   memcpy(oidName, pVar->getName()->getValue(), dwNameLen * sizeof(UINT32));
 
    oidName[dwNameLen - 6] = 1;  // Retrieve interface index
    dwResult = SnmpGet(dwVersion, pTransport, NULL, oidName, dwNameLen, &dwIndex, sizeof(UINT32), 0);
@@ -46,7 +46,7 @@ static UINT32 HandlerArp(UINT32 dwVersion, SNMP_Variable *pVar, SNMP_Transport *
       ((ARP_CACHE *)pArg)->dwNumEntries++;
       ((ARP_CACHE *)pArg)->pEntries = (ARP_ENTRY *)realloc(((ARP_CACHE *)pArg)->pEntries,
                sizeof(ARP_ENTRY) * ((ARP_CACHE *)pArg)->dwNumEntries);
-      ((ARP_CACHE *)pArg)->pEntries[((ARP_CACHE *)pArg)->dwNumEntries - 1].dwIpAddr = ntohl(pVar->GetValueAsUInt());
+      ((ARP_CACHE *)pArg)->pEntries[((ARP_CACHE *)pArg)->dwNumEntries - 1].dwIpAddr = ntohl(pVar->getValueAsUInt());
       memcpy(((ARP_CACHE *)pArg)->pEntries[((ARP_CACHE *)pArg)->dwNumEntries - 1].bMacAddr, bMac, 6);
       ((ARP_CACHE *)pArg)->pEntries[((ARP_CACHE *)pArg)->dwNumEntries - 1].dwIndex = dwIndex;
    }
@@ -133,14 +133,14 @@ static UINT32 HandlerRoute(UINT32 dwVersion, SNMP_Variable *pVar, SNMP_Transport
    ROUTE route;
        ROUTING_TABLE *rt = (ROUTING_TABLE *)pArg;
 
-   dwNameLen = pVar->GetName()->getLength();
+   dwNameLen = pVar->getName()->getLength();
        if ((dwNameLen < 5) || (dwNameLen > MAX_OID_LEN))
        {
-               DbgPrintf(4, _T("HandlerRoute(): strange dwNameLen %d (name=%s)"), dwNameLen, pVar->GetName()->getValueAsText());
+               DbgPrintf(4, _T("HandlerRoute(): strange dwNameLen %d (name=%s)"), dwNameLen, pVar->getName()->getValueAsText());
                return SNMP_ERR_SUCCESS;
        }
-   memcpy(oidName, pVar->GetName()->getValue(), dwNameLen * sizeof(UINT32));
-   route.dwDestAddr = ntohl(pVar->GetValueAsUInt());
+   memcpy(oidName, pVar->getName()->getValue(), dwNameLen * sizeof(UINT32));
+   route.dwDestAddr = ntohl(pVar->getValueAsUInt());
 
    oidName[dwNameLen - 5] = 2;  // Interface index
    if ((dwResult = SnmpGet(dwVersion, pTransport, NULL, oidName, dwNameLen,
index f313db8..c40c405 100644 (file)
@@ -64,8 +64,8 @@ static BOOL LoadTrapCfg()
       for(i = 0; i < m_dwNumTraps; i++)
       {
          m_pTrapCfg[i].dwId = DBGetFieldULong(hResult, i, 0);
-         m_pTrapCfg[i].dwOidLen = SNMPParseOID(DBGetField(hResult, i, 1, szBuffer, MAX_DB_STRING),
-                                               pdwBuffer, MAX_OID_LEN);
+         m_pTrapCfg[i].dwOidLen = (UINT32)SNMPParseOID(DBGetField(hResult, i, 1, szBuffer, MAX_DB_STRING),
+                                                       pdwBuffer, MAX_OID_LEN);
          if (m_pTrapCfg[i].dwOidLen > 0)
          {
             m_pTrapCfg[i].pdwObjectId = (UINT32 *)nx_memdup(pdwBuffer, m_pTrapCfg[i].dwOidLen * sizeof(UINT32));
@@ -103,7 +103,7 @@ static BOOL LoadTrapCfg()
                }
                else
                {
-                  m_pTrapCfg[i].pMaps[j].dwOidLen = SNMPParseOID(pszOID, pdwBuffer, MAX_OID_LEN);
+                  m_pTrapCfg[i].pMaps[j].dwOidLen = (UINT32)SNMPParseOID(pszOID, pdwBuffer, MAX_OID_LEN);
                   if (m_pTrapCfg[i].pMaps[j].dwOidLen > 0)
                   {
                      m_pTrapCfg[i].pMaps[j].pdwObjectId = 
@@ -190,7 +190,7 @@ static void GenerateTrapEvent(UINT32 dwObjectId, UINT32 dwIndex, SNMP_PDU *pdu)
                        // Extract by varbind OID
          for(j = 0; j < pdu->getNumVariables(); j++)
          {
-            iResult = pdu->getVariable(j)->GetName()->compare(
+            iResult = pdu->getVariable(j)->getName()->compare(
                   m_pTrapCfg[dwIndex].pMaps[i].pdwObjectId,
                   m_pTrapCfg[dwIndex].pMaps[i].dwOidLen);
             if ((iResult == OID_EQUAL) || (iResult == OID_SHORTER))
@@ -277,7 +277,7 @@ static void ProcessTrap(SNMP_PDU *pdu, struct sockaddr_in *pOrigin, SNMP_Transpo
                        bool convertToHex = true;
          dwBufPos += _sntprintf(&pszTrapArgs[dwBufPos], dwBufSize - dwBufPos, _T("%s%s == '%s'"),
                                 (dwBufPos == 0) ? _T("") : _T("; "),
-                                pVar->GetName()->getValueAsText(), 
+                                pVar->getName()->getValueAsText(), 
                                                                                  s_allowVarbindConversion ? pVar->getValueAsPrintableString(szBuffer, 3000, &convertToHex) : pVar->getValueAsString(szBuffer, 3000));
       }
 
@@ -369,7 +369,7 @@ static void ProcessTrap(SNMP_PDU *pdu, struct sockaddr_in *pOrigin, SNMP_Transpo
                                        bool convertToHex = true;
                dwBufPos += _sntprintf(&pszTrapArgs[dwBufPos], dwBufSize - dwBufPos, _T("%s%s == '%s'"),
                                       (dwBufPos == 0) ? _T("") : _T("; "),
-                                      pVar->GetName()->getValueAsText(), 
+                                      pVar->getName()->getValueAsText(), 
                                                                                                  s_allowVarbindConversion ? pVar->getValueAsPrintableString(szBuffer, 512, &convertToHex) : pVar->getValueAsString(szBuffer, 512));
             }
 
@@ -504,7 +504,7 @@ THREAD_RESULT THREAD_CALL SNMPTrapReceiver(void *pArg)
                                response->setContextEngineId(localEngine.getId(), localEngine.getIdLen());
 
                                SNMP_Variable *var = new SNMP_Variable(_T(".1.3.6.1.6.3.15.1.1.4.0"));
-                               var->SetValueFromString(ASN_INTEGER, _T("2"));
+                               var->setValueFromString(ASN_INTEGER, _T("2"));
                                response->bindVariable(var);
                                
                                SNMP_SecurityContext *context = new SNMP_SecurityContext();
@@ -520,7 +520,7 @@ THREAD_RESULT THREAD_CALL SNMPTrapReceiver(void *pArg)
                        }
                        else if (pdu->getCommand() == SNMP_REPORT)
                        {
-                               DbgPrintf(6, _T("SNMPTrapReceiver: REPORT PDU with error %s"), pdu->getVariable(0)->GetName()->getValueAsText());
+                               DbgPrintf(6, _T("SNMPTrapReceiver: REPORT PDU with error %s"), pdu->getVariable(0)->getName()->getValueAsText());
                        }
          delete pdu;
       }
index f1b2668..8ccca63 100644 (file)
  */
 static UINT32 STPPortListHandler(UINT32 snmpVersion, SNMP_Variable *var, SNMP_Transport *transport, void *arg)
 {
-       int state = var->GetValueAsInt();
+       int state = var->getValueAsInt();
        if ((state != 2) && (state != 5))
                return SNMP_ERR_SUCCESS;  // port state not "blocked" or "forwarding"
 
        Node *node = (Node *)((LinkLayerNeighbors *)arg)->getData();
-       SNMP_ObjectId *oid = var->GetName();
+       SNMP_ObjectId *oid = var->getName();
 
        return SNMP_ERR_SUCCESS;
 }
index ef2f7de..05b65d1 100644 (file)
@@ -65,11 +65,11 @@ VrrpRouter::~VrrpRouter()
  */
 void VrrpRouter::addVirtualIP(SNMP_Variable *var)
 {
-       if (var->GetValueAsInt() != VRRP_VIP_ACTIVE)
+       if (var->getValueAsInt() != VRRP_VIP_ACTIVE)
                return; // Ignore non-active VIPs
 
        // IP is encoded in last 4 elements of the OID
-       const UINT32 *oid = var->GetName()->getValue();
+       const UINT32 *oid = var->getName()->getValue();
        UINT32 vip = (oid[13] << 24) | (oid[14] << 16) | (oid[15] << 8) | oid[16];
 
        if (m_ipAddrCount % 16 == 0)
@@ -101,12 +101,12 @@ bool VrrpRouter::readVirtualIP(UINT32 snmpVersion, SNMP_Transport *transport)
  */
 UINT32 VRRPHandler(UINT32 snmpVersion, SNMP_Variable *var, SNMP_Transport *transport, void *arg)
 {
-       SNMP_ObjectId *oid = var->GetName();
+       SNMP_ObjectId *oid = var->getName();
 
        // Entries indexed by ifIndex and VRID
        UINT32 ifIndex = oid->getValue()[11];
        UINT32 vrid = oid->getValue()[12];
-       int state = var->GetValueAsInt();
+       int state = var->getValueAsInt();
 
        UINT32 oidMac[64];
        memcpy(oidMac, oid->getValue(), oid->getLength() * sizeof(UINT32));
index c72346f..7b14605 100644 (file)
@@ -140,13 +140,13 @@ InterfaceList *AlliedTelesisDriver::getInterfaces(SNMP_Transport *snmp, StringMa
             if (rcc == SNMP_ERR_SUCCESS)
             {
                if ((response->getNumVariables() == 2) && 
-                   (response->getVariable(0)->GetType() != ASN_NO_SUCH_OBJECT) &&
-                   (response->getVariable(0)->GetType() != ASN_NO_SUCH_INSTANCE) &&
-                   (response->getVariable(1)->GetType() != ASN_NO_SUCH_OBJECT) &&
-                   (response->getVariable(1)->GetType() != ASN_NO_SUCH_INSTANCE))
+                   (response->getVariable(0)->getType() != ASN_NO_SUCH_OBJECT) &&
+                   (response->getVariable(0)->getType() != ASN_NO_SUCH_INSTANCE) &&
+                   (response->getVariable(1)->getType() != ASN_NO_SUCH_OBJECT) &&
+                   (response->getVariable(1)->getType() != ASN_NO_SUCH_INSTANCE))
                {
-                  iface->dwSlotNumber = response->getVariable(0)->GetValueAsInt();
-                  iface->dwPortNumber = response->getVariable(1)->GetValueAsInt();
+                  iface->dwSlotNumber = response->getVariable(0)->getValueAsInt();
+                  iface->dwPortNumber = response->getVariable(1)->getValueAsInt();
                   iface->isPhysicalPort = true;
                }
                delete response;
@@ -164,7 +164,7 @@ static UINT32 HandlerVlanList(UINT32 version, SNMP_Variable *var, SNMP_Transport
 {
    VlanList *vlanList = (VlanList *)arg;
 
-       VlanInfo *vlan = new VlanInfo(var->GetName()->getValue()[var->GetName()->getLength() - 1], VLAN_PRM_SLOTPORT);
+       VlanInfo *vlan = new VlanInfo(var->getName()->getValue()[var->getName()->getLength() - 1], VLAN_PRM_SLOTPORT);
 
        TCHAR buffer[256];
        vlan->setName(var->getValueAsString(buffer, 256));
@@ -242,10 +242,10 @@ VlanList *AlliedTelesisDriver::getVlans(SNMP_Transport *snmp, StringMap *attribu
       if (snmp->doRequest(request, &response, g_dwSNMPTimeout, 3) == SNMP_ERR_SUCCESS)
       {
          if ((response->getNumVariables() == 2) && 
-             (response->getVariable(0)->GetType() != ASN_NO_SUCH_OBJECT) &&
-             (response->getVariable(0)->GetType() != ASN_NO_SUCH_INSTANCE) &&
-             (response->getVariable(1)->GetType() != ASN_NO_SUCH_OBJECT) &&
-             (response->getVariable(1)->GetType() != ASN_NO_SUCH_INSTANCE))
+             (response->getVariable(0)->getType() != ASN_NO_SUCH_OBJECT) &&
+             (response->getVariable(0)->getType() != ASN_NO_SUCH_INSTANCE) &&
+             (response->getVariable(1)->getType() != ASN_NO_SUCH_OBJECT) &&
+             (response->getVariable(1)->getType() != ASN_NO_SUCH_INSTANCE))
          {
             TCHAR buffer[1024];
             ParsePortList(response->getVariable(0)->getValueAsString(buffer, 1024), vlan, 1);
index e755c23..b30b3c7 100644 (file)
@@ -88,12 +88,12 @@ static UINT32 HandlerPortList(UINT32 version, SNMP_Variable *var, SNMP_Transport
 {
        InterfaceList *ifList = (InterfaceList *)arg;
 
-       NX_INTERFACE_INFO *iface = ifList->findByIfIndex(var->GetValueAsUInt());
+       NX_INTERFACE_INFO *iface = ifList->findByIfIndex(var->getValueAsUInt());
        if (iface != NULL)
        {
-               UINT32 nameLen = var->GetName()->getLength();
-               iface->dwSlotNumber = var->GetName()->getValue()[nameLen - 2];
-               iface->dwPortNumber = var->GetName()->getValue()[nameLen - 1];
+               size_t nameLen = var->getName()->getLength();
+               iface->dwSlotNumber = var->getName()->getValue()[nameLen - 2];
+               iface->dwPortNumber = var->getName()->getValue()[nameLen - 1];
                iface->isPhysicalPort = true;
        }
        return SNMP_ERR_SUCCESS;
index 407a654..b632cf6 100644 (file)
@@ -76,12 +76,12 @@ static UINT32 HandlerPortList(UINT32 version, SNMP_Variable *var, SNMP_Transport
 {
        InterfaceList *ifList = (InterfaceList *)arg;
 
-       NX_INTERFACE_INFO *iface = ifList->findByIfIndex(var->GetValueAsUInt());
+       NX_INTERFACE_INFO *iface = ifList->findByIfIndex(var->getValueAsUInt());
        if (iface != NULL)
        {
-               UINT32 nameLen = var->GetName()->getLength();
+               size_t nameLen = var->getName()->getLength();
                
-               UINT32 moduleIndex = var->GetName()->getValue()[nameLen - 2];
+               UINT32 moduleIndex = var->getName()->getValue()[nameLen - 2];
                UINT32 oid[] = { 1, 3, 6, 1, 4, 1, 9, 5, 1, 3, 1, 1, 25, 0 };
                oid[13] = moduleIndex;
                UINT32 slot;
@@ -89,7 +89,7 @@ static UINT32 HandlerPortList(UINT32 version, SNMP_Variable *var, SNMP_Transport
                        slot = moduleIndex;     // Assume slot # equal to module index if it cannot be read
 
                iface->dwSlotNumber = slot;
-               iface->dwPortNumber = var->GetName()->getValue()[nameLen - 1];
+               iface->dwPortNumber = var->getName()->getValue()[nameLen - 1];
                iface->isPhysicalPort = true;
        }
        return SNMP_ERR_SUCCESS;
index 5592218..8d6419b 100644 (file)
@@ -43,11 +43,11 @@ static UINT32 HandlerVlanList(UINT32 dwVersion, SNMP_Variable *pVar, SNMP_Transp
    UINT32 oidName[MAX_OID_LEN], dwResult;
    VlanList *vlanList = (VlanList *)pArg;
 
-   UINT32 dwNameLen = pVar->GetName()->getLength();
-       VlanInfo *vlan = new VlanInfo(pVar->GetValueAsInt(), VLAN_PRM_IFINDEX);
+   UINT32 dwNameLen = pVar->getName()->getLength();
+       VlanInfo *vlan = new VlanInfo(pVar->getValueAsInt(), VLAN_PRM_IFINDEX);
 
    // Get VLAN name
-   memcpy(oidName, pVar->GetName()->getValue(), dwNameLen * sizeof(UINT32));
+   memcpy(oidName, pVar->getName()->getValue(), dwNameLen * sizeof(UINT32));
    oidName[dwNameLen - 2] = 2;
    TCHAR buffer[256];
        dwResult = SnmpGet(dwVersion, pTransport, NULL, oidName, dwNameLen, buffer, sizeof(buffer), SG_STRING_RESULT);
index 2e1aa77..893b33c 100644 (file)
@@ -48,38 +48,38 @@ struct VLAN_LIST
  */
 static UINT32 HandlerVlanIfList(UINT32 dwVersion, SNMP_Variable *pVar, SNMP_Transport *pTransport, void *pArg)
 {
-   UINT32 dwIndex, oidName[MAX_OID_LEN], dwNameLen, dwResult;
+   UINT32 dwIndex, oidName[MAX_OID_LEN], dwResult;
    VLAN_LIST *pVlanList = (VLAN_LIST *)pArg;
    BYTE szBuffer[256];
 
-   dwNameLen = pVar->GetName()->getLength();
+   size_t nameLen = pVar->getName()->getLength();
 
    // Extend VLAN list and set ID of new VLAN
    dwIndex = pVlanList->dwNumVlans;
    pVlanList->dwNumVlans++;
    pVlanList->pList = (VLAN_INFO *)realloc(pVlanList->pList, sizeof(VLAN_INFO) * pVlanList->dwNumVlans);
-   pVlanList->pList[dwIndex].dwVlanId = pVar->GetValueAsUInt();
+   pVlanList->pList[dwIndex].dwVlanId = pVar->getValueAsUInt();
 
    // Get VLAN name
-   memcpy(oidName, pVar->GetName()->getValue(), dwNameLen * sizeof(UINT32));
-   oidName[dwNameLen - 2] = 2;
-   dwResult = SnmpGet(dwVersion, pTransport, NULL, oidName, dwNameLen, 
+   memcpy(oidName, pVar->getName()->getValue(), nameLen * sizeof(UINT32));
+   oidName[nameLen - 2] = 2;
+   dwResult = SnmpGet(dwVersion, pTransport, NULL, oidName, nameLen, 
                       pVlanList->pList[dwIndex].szName, MAX_OBJECT_NAME * sizeof(TCHAR), 0);
    if (dwResult != SNMP_ERR_SUCCESS)
       return dwResult;
 
    // Get VLAN interface index
-   oidName[dwNameLen - 2] = 6;
-   dwResult = SnmpGet(dwVersion, pTransport, NULL, oidName, dwNameLen, 
+   oidName[nameLen - 2] = 6;
+   dwResult = SnmpGet(dwVersion, pTransport, NULL, oidName, nameLen, 
                       &pVlanList->pList[dwIndex].dwIfIndex, sizeof(UINT32), 0);
    if (dwResult != SNMP_ERR_SUCCESS)
       return dwResult;
 
    // Get VLAN MAC address
-   oidName[dwNameLen - 2] = 19;
+   oidName[nameLen - 2] = 19;
    memset(pVlanList->pList[dwIndex].bMacAddr, 0, MAC_ADDR_LENGTH);
    memset(szBuffer, 0, MAC_ADDR_LENGTH);
-   dwResult = SnmpGet(dwVersion, pTransport, NULL, oidName, dwNameLen, szBuffer, 256, SG_RAW_RESULT);
+   dwResult = SnmpGet(dwVersion, pTransport, NULL, oidName, nameLen, szBuffer, 256, SG_RAW_RESULT);
    if (dwResult == SNMP_ERR_SUCCESS)
       memcpy(pVlanList->pList[dwIndex].bMacAddr, szBuffer, MAC_ADDR_LENGTH);
    return dwResult;
@@ -92,9 +92,9 @@ static UINT32 HandlerRapidCityIfList(UINT32 dwVersion, SNMP_Variable *pVar, SNMP
 {
    InterfaceList *pIfList = (InterfaceList *)pArg;
    VLAN_LIST *pVlanList = (VLAN_LIST *)pIfList->getData();
-   UINT32 oidName[MAX_OID_LEN], dwVlanIndex, dwIfIndex, dwNameLen, dwResult;
+   UINT32 oidName[MAX_OID_LEN], dwVlanIndex, dwIfIndex, dwResult;
 
-   dwIfIndex = pVar->GetValueAsUInt();
+   dwIfIndex = pVar->getValueAsUInt();
    for(dwVlanIndex = 0; dwVlanIndex < pVlanList->dwNumVlans; dwVlanIndex++)
       if (pVlanList->pList[dwVlanIndex].dwIfIndex == dwIfIndex)
          break;
@@ -110,18 +110,18 @@ static UINT32 HandlerRapidCityIfList(UINT32 dwVersion, SNMP_Variable *pVar, SNMP
       iface.dwType = IFTYPE_OTHER;
       memcpy(iface.bMacAddr, pVlanList->pList[dwVlanIndex].bMacAddr, MAC_ADDR_LENGTH);
       
-      dwNameLen = pVar->GetName()->getLength();
+      size_t nameLen = pVar->getName()->getLength();
 
       // Get IP address
-      memcpy(oidName, pVar->GetName()->getValue(), dwNameLen * sizeof(UINT32));
-      oidName[dwNameLen - 6] = 2;
-      dwResult = SnmpGet(dwVersion, pTransport, NULL, oidName, dwNameLen, &iface.dwIpAddr, sizeof(UINT32), 0);
+      memcpy(oidName, pVar->getName()->getValue(), nameLen * sizeof(UINT32));
+      oidName[nameLen - 6] = 2;
+      dwResult = SnmpGet(dwVersion, pTransport, NULL, oidName, nameLen, &iface.dwIpAddr, sizeof(UINT32), 0);
 
       if (dwResult == SNMP_ERR_SUCCESS)
       {
          // Get netmask
-         oidName[dwNameLen - 6] = 3;
-         dwResult = SnmpGet(dwVersion, pTransport, NULL, oidName, dwNameLen, &iface.dwIpNetMask, sizeof(UINT32), 0);
+         oidName[nameLen - 6] = 3;
+         dwResult = SnmpGet(dwVersion, pTransport, NULL, oidName, nameLen, &iface.dwIpNetMask, sizeof(UINT32), 0);
       }
 
                pIfList->add(&iface);
index e35fc80..02f533a 100644 (file)
@@ -31,7 +31,7 @@ static UINT32 HandlerVlanList(UINT32 version, SNMP_Variable *var, SNMP_Transport
 {
    VlanList *vlanList = (VlanList *)arg;
 
-       VlanInfo *vlan = new VlanInfo(var->GetName()->getValue()[var->GetName()->getLength() - 1], VLAN_PRM_IFINDEX);
+       VlanInfo *vlan = new VlanInfo(var->getName()->getValue()[var->getName()->getLength() - 1], VLAN_PRM_IFINDEX);
 
        TCHAR buffer[256];
        vlan->setName(var->getValueAsString(buffer, 256));
@@ -85,12 +85,12 @@ static void ParseVlanMap(VlanList *vlanList, UINT32 ifIndex, BYTE *map, int offs
 static UINT32 HandlerTrunkPorts(UINT32 version, SNMP_Variable *var, SNMP_Transport *transport, void *arg)
 {
    VlanList *vlanList = (VlanList *)arg;
-   UINT32 nameLen = var->GetName()->getLength();
-       UINT32 ifIndex = var->GetName()->getValue()[nameLen - 1];
+   size_t nameLen = var->getName()->getLength();
+       UINT32 ifIndex = var->getName()->getValue()[nameLen - 1];
 
        // Check if port is acting as trunk
        UINT32 oidName[256], value;
-   memcpy(oidName, var->GetName()->getValue(), nameLen * sizeof(UINT32));
+   memcpy(oidName, var->getName()->getValue(), nameLen * sizeof(UINT32));
    oidName[nameLen - 2] = 14;  // .1.3.6.1.4.1.9.9.46.1.6.1.1.14
        if (SnmpGet(version, transport, NULL, oidName, nameLen, &value, sizeof(UINT32), 0) != SNMP_ERR_SUCCESS)
           return SNMP_ERR_SUCCESS;     // Cannot get trunk state, ignore port
@@ -98,7 +98,7 @@ static UINT32 HandlerTrunkPorts(UINT32 version, SNMP_Variable *var, SNMP_Transpo
           return SNMP_ERR_SUCCESS;     // Not a trunk port, ignore
 
        // Native VLAN
-       int vlanId = var->GetValueAsInt();
+       int vlanId = var->getValueAsInt();
        if (vlanId != 0)
                vlanList->addMemberPort(vlanId, ifIndex);
 
@@ -137,14 +137,14 @@ static UINT32 HandlerTrunkPorts(UINT32 version, SNMP_Variable *var, SNMP_Transpo
 static UINT32 HandlerAccessPorts(UINT32 version, SNMP_Variable *var, SNMP_Transport *transport, void *arg)
 {
    VlanList *vlanList = (VlanList *)arg;
-   UINT32 nameLen = var->GetName()->getLength();
-       UINT32 ifIndex = var->GetName()->getValue()[nameLen - 1];
+   size_t nameLen = var->getName()->getLength();
+       UINT32 ifIndex = var->getName()->getValue()[nameLen - 1];
 
        UINT32 oidName[256];
-   memcpy(oidName, var->GetName()->getValue(), nameLen * sizeof(UINT32));
+   memcpy(oidName, var->getName()->getValue(), nameLen * sizeof(UINT32));
 
        // Entry type: 3=multi-vlan
-       if (var->GetValueAsInt() == 3)
+       if (var->getValueAsInt() == 3)
        {
                BYTE map[128];
 
index 0a4fb27..350cd79 100644 (file)
@@ -87,13 +87,13 @@ static UINT32 HandlerIfList(UINT32 snmpVersion, SNMP_Variable *varbind, SNMP_Tra
 {
        InterfaceList *ifList = (InterfaceList *)arg;
 
-   UINT32 nameLen = varbind->GetName()->getLength();
+   UINT32 nameLen = varbind->getName()->getLength();
        UINT32 oidName[MAX_OID_LEN];
-       memcpy(oidName, varbind->GetName()->getValue(), nameLen * sizeof(UINT32));
+       memcpy(oidName, varbind->getName()->getValue(), nameLen * sizeof(UINT32));
 
        NX_INTERFACE_INFO iface;
        memset(&iface, 0, sizeof(NX_INTERFACE_INFO));
-       iface.dwIndex = varbind->GetValueAsUInt();
+       iface.dwIndex = varbind->getValueAsUInt();
 
        oidName[10] = 2;        // nsIfName
        UINT32 rc = SnmpGet(snmpVersion, transport, NULL, oidName, nameLen, iface.szName, MAX_DB_STRING * sizeof(TCHAR), SG_STRING_RESULT);
index 3a09727..7095277 100644 (file)
@@ -124,8 +124,8 @@ static UINT32 HandlerAccessPointListAdopted(UINT32 version, SNMP_Variable *var,
 
    ObjectArray<AccessPointInfo> *apList = (ObjectArray<AccessPointInfo> *)arg;
 
-   SNMP_ObjectId *name = var->GetName();
-   UINT32 nameLen = name->getLength();
+   SNMP_ObjectId *name = var->getName();
+   size_t nameLen = name->getLength();
 
    UINT32 oid[128];
    memcpy(oid, name->getValue(), nameLen * sizeof(UINT32));
@@ -151,7 +151,7 @@ static UINT32 HandlerAccessPointListAdopted(UINT32 version, SNMP_Variable *var,
       if (response->getNumVariables() >= 2)
       {
          TCHAR model[256], name[256];
-         AccessPointInfo *ap = new AccessPointInfo((BYTE *)var->GetValue(), AP_ADOPTED, 
+         AccessPointInfo *ap = new AccessPointInfo((BYTE *)var->getValue(), AP_ADOPTED, 
             response->getVariable(1)->getValueAsString(name, 256), response->getVariable(0)->getValueAsString(model, 256), serial);
          apList->add(ap);
       }
@@ -169,14 +169,14 @@ static UINT32 HandlerRadioList(UINT32 version, SNMP_Variable *var, SNMP_Transpor
 {
    AccessPointInfo *ap = (AccessPointInfo *)arg;
 
-   SNMP_ObjectId *name = var->GetName();
-   UINT32 nameLen = name->getLength();
+   SNMP_ObjectId *name = var->getName();
+   size_t nameLen = name->getLength();
 
    UINT32 oid[128];
    memcpy(oid, name->getValue(), nameLen * sizeof(UINT32));
 
    RadioInterfaceInfo rif;
-   memcpy(rif.macAddr, var->GetValue(), MAC_ADDR_LENGTH);
+   memcpy(rif.macAddr, var->getValue(), MAC_ADDR_LENGTH);
    rif.index = (int)oid[nameLen - 1];
    _sntprintf(rif.name, sizeof(rif.name) / sizeof(TCHAR), _T("Radio%d"), rif.index);
    
@@ -193,9 +193,9 @@ static UINT32 HandlerRadioList(UINT32 version, SNMP_Variable *var, SNMP_Transpor
    {
       if (response->getNumVariables() >= 2)
       {
-         rif.powerDBm = response->getVariable(0)->GetValueAsInt();
+         rif.powerDBm = response->getVariable(0)->getValueAsInt();
          rif.powerMW = (int)pow(10.0, (double)rif.powerDBm / 10.0);
-         rif.channel = response->getVariable(1)->GetValueAsUInt();
+         rif.channel = response->getVariable(1)->getValueAsUInt();
          ap->addRadioInterface(&rif);
       }
       delete response;
@@ -260,8 +260,8 @@ static UINT32 HandlerWirelessStationList(UINT32 version, SNMP_Variable *var, SNM
 
    ObjectArray<WirelessStationInfo> *wsList = (ObjectArray<WirelessStationInfo> *)arg;
 
-   SNMP_ObjectId *name = var->GetName();
-   UINT32 nameLen = name->getLength();
+   SNMP_ObjectId *name = var->getName();
+   size_t nameLen = name->getLength();
    const UINT32 *value = name->getValue();
 
    UINT32 oid[32];
@@ -304,7 +304,7 @@ static UINT32 HandlerWirelessStationList(UINT32 version, SNMP_Variable *var, SNM
    {
       WirelessStationInfo *info = new WirelessStationInfo;
 
-      memcpy(info->macAddr, var->GetValue(), MAC_ADDR_LENGTH);
+      memcpy(info->macAddr, var->getValue(), MAC_ADDR_LENGTH);
       info->ipAddr = ipAddr;
       info->vlan = vlanInfex;
       nx_strncpy(info->ssid, ssid, MAX_OBJECT_NAME);
index 06e3526..19b5b62 100644 (file)
@@ -142,8 +142,8 @@ static UINT32 HandlerAccessPointListUnadopted(UINT32 version, SNMP_Variable *var
 {
    ObjectArray<AccessPointInfo> *apList = (ObjectArray<AccessPointInfo> *)arg;
 
-   SNMP_ObjectId *name = var->GetName();
-   UINT32 nameLen = name->getLength();
+   SNMP_ObjectId *name = var->getName();
+   size_t nameLen = name->getLength();
    UINT32 apIndex = name->getValue()[nameLen - 1];
 
    UINT32 oid[] = { 1, 3, 6, 1, 4, 1, 388, 14, 3, 2, 1, 9, 4, 1, 3, 0 };
@@ -174,7 +174,7 @@ static UINT32 HandlerAccessPointListUnadopted(UINT32 version, SNMP_Variable *var
          break;
    }
 
-   AccessPointInfo *info = new AccessPointInfo((BYTE *)var->GetValue(), AP_UNADOPTED, NULL, model, NULL);
+   AccessPointInfo *info = new AccessPointInfo((BYTE *)var->getValue(), AP_UNADOPTED, NULL, model, NULL);
    apList->add(info);
 
    return SNMP_ERR_SUCCESS;
@@ -189,8 +189,8 @@ static UINT32 HandlerAccessPointListAdopted(UINT32 version, SNMP_Variable *var,
 
    ObjectArray<AccessPointInfo> *apList = (ObjectArray<AccessPointInfo> *)arg;
 
-   SNMP_ObjectId *name = var->GetName();
-   UINT32 nameLen = name->getLength();
+   SNMP_ObjectId *name = var->getName();
+   size_t nameLen = name->getLength();
    UINT32 apIndex = name->getValue()[nameLen - 1];
 
    UINT32 numberOfRadios;
@@ -269,7 +269,7 @@ static UINT32 HandlerAccessPointListAdopted(UINT32 version, SNMP_Variable *var,
    AccessPointInfo *info;
    if (ret == SNMP_ERR_SUCCESS)
    {
-      info = new AccessPointInfo((BYTE *)var->GetValue(), AP_ADOPTED, NULL, model, serial);
+      info = new AccessPointInfo((BYTE *)var->getValue(), AP_ADOPTED, NULL, model, serial);
       apList->add(info);
    }
 
@@ -376,8 +376,8 @@ static UINT32 HandlerWirelessStationList(UINT32 version, SNMP_Variable *var, SNM
 
    ObjectArray<WirelessStationInfo> *wsList = (ObjectArray<WirelessStationInfo> *)arg;
 
-   SNMP_ObjectId *name = var->GetName();
-   UINT32 nameLen = name->getLength();
+   SNMP_ObjectId *name = var->getName();
+   size_t nameLen = name->getLength();
    const UINT32 *value = name->getValue();
 
    UINT32 oid[32];
@@ -420,7 +420,7 @@ static UINT32 HandlerWirelessStationList(UINT32 version, SNMP_Variable *var, SNM
    {
       WirelessStationInfo *info = new WirelessStationInfo;
 
-      memcpy(info->macAddr, var->GetValue(), MAC_ADDR_LENGTH);
+      memcpy(info->macAddr, var->getValue(), MAC_ADDR_LENGTH);
       info->ipAddr = ipAddr;
       info->vlan = vlanInfex;
       nx_strncpy(info->ssid, ssid, MAX_OBJECT_NAME);
index c9523e0..96b2376 100644 (file)
@@ -635,11 +635,11 @@ const TCHAR LIBNXSRV_EXPORTABLE *ISCErrorCodeToText(UINT32 code);
 
 UINT32 LIBNXSRV_EXPORTABLE SnmpNewRequestId();
 UINT32 LIBNXSRV_EXPORTABLE SnmpGet(int version, SNMP_Transport *transport,
-                                  const TCHAR *szOidStr, const UINT32 *oidBinary, UINT32 dwOidLen, void *pValue,
-                                  UINT32 dwBufferSize, UINT32 dwFlags);
+                                  const TCHAR *szOidStr, const UINT32 *oidBinary, size_t oidLen, void *pValue,
+                                  size_t bufferSize, UINT32 dwFlags);
 UINT32 LIBNXSRV_EXPORTABLE SnmpGetEx(SNMP_Transport *pTransport,
-                                     const TCHAR *szOidStr, const UINT32 *oidBinary, UINT32 dwOidLen, void *pValue,
-                                     UINT32 dwBufferSize, UINT32 dwFlags, UINT32 *dataLen);
+                                     const TCHAR *szOidStr, const UINT32 *oidBinary, size_t oidLen, void *pValue,
+                                     size_t bufferSize, UINT32 dwFlags, UINT32 *dataLen);
 UINT32 LIBNXSRV_EXPORTABLE SnmpWalk(UINT32 dwVersion, SNMP_Transport *pTransport, const TCHAR *szRootOid,
                                                                 UINT32 (* pHandler)(UINT32, SNMP_Variable *, SNMP_Transport *, void *),
                                    void *pUserArg, BOOL bVerbose);
index 0dda0fd..db41281 100644 (file)
@@ -156,7 +156,7 @@ static UINT32 HandlerIndex(UINT32 dwVersion, SNMP_Variable *pVar, SNMP_Transport
 {
        NX_INTERFACE_INFO info;
        memset(&info, 0, sizeof(NX_INTERFACE_INFO));
-       info.dwIndex = pVar->GetValueAsUInt();
+       info.dwIndex = pVar->getValueAsUInt();
        ((InterfaceList *)pArg)->add(&info);
    return SNMP_ERR_SUCCESS;
 }
@@ -166,7 +166,7 @@ static UINT32 HandlerIndex(UINT32 dwVersion, SNMP_Variable *pVar, SNMP_Transport
  */
 static UINT32 HandlerIndexIfXTable(UINT32 dwVersion, SNMP_Variable *pVar, SNMP_Transport *pTransport, void *pArg)
 {
-   SNMP_ObjectId *name = pVar->GetName();
+   SNMP_ObjectId *name = pVar->getName();
    UINT32 index = name->getValue()[name->getLength() - 1];
    if (((InterfaceList *)pArg)->findByIfIndex(index) == NULL)
    {
@@ -183,26 +183,26 @@ static UINT32 HandlerIndexIfXTable(UINT32 dwVersion, SNMP_Variable *pVar, SNMP_T
  */
 static UINT32 HandlerIpAddr(UINT32 dwVersion, SNMP_Variable *pVar, SNMP_Transport *pTransport, void *pArg)
 {
-   UINT32 dwIndex, dwNetMask, dwNameLen, dwResult;
+   UINT32 dwIndex, dwNetMask, dwResult;
    UINT32 oidName[MAX_OID_LEN];
 
-   dwNameLen = pVar->GetName()->getLength();
-   memcpy(oidName, pVar->GetName()->getValue(), dwNameLen * sizeof(UINT32));
-   oidName[dwNameLen - 5] = 3;  // Retrieve network mask for this IP
-   dwResult = SnmpGet(dwVersion, pTransport, NULL, oidName, dwNameLen, &dwNetMask, sizeof(UINT32), 0);
+   size_t nameLen = pVar->getName()->getLength();
+   memcpy(oidName, pVar->getName()->getValue(), nameLen * sizeof(UINT32));
+   oidName[nameLen - 5] = 3;  // Retrieve network mask for this IP
+   dwResult = SnmpGet(dwVersion, pTransport, NULL, oidName, nameLen, &dwNetMask, sizeof(UINT32), 0);
    if (dwResult != SNMP_ERR_SUCCESS)
        {
                TCHAR buffer[1024];
                DbgPrintf(6, _T("NetworkDeviceDriver::getInterfaces(%p): SNMP GET %s failed (error %d)"), 
-                       pTransport, SNMPConvertOIDToText(dwNameLen, oidName, buffer, 1024), (int)dwResult);
+                       pTransport, SNMPConvertOIDToText(nameLen, oidName, buffer, 1024), (int)dwResult);
                // Continue walk even if we get error for some IP address
                // For example, some Cisco ASA versions reports IP when walking, but does not
                // allow to SNMP GET appropriate entry
       return SNMP_ERR_SUCCESS;
        }
 
-   oidName[dwNameLen - 5] = 2;  // Retrieve interface index for this IP
-   dwResult = SnmpGet(dwVersion, pTransport, NULL, oidName, dwNameLen, &dwIndex, sizeof(UINT32), 0);
+   oidName[nameLen - 5] = 2;  // Retrieve interface index for this IP
+   dwResult = SnmpGet(dwVersion, pTransport, NULL, oidName, nameLen, &dwIndex, sizeof(UINT32), 0);
    if (dwResult == SNMP_ERR_SUCCESS)
    {
                InterfaceList *ifList = (InterfaceList *)pArg;
@@ -217,13 +217,13 @@ static UINT32 HandlerIpAddr(UINT32 dwVersion, SNMP_Variable *pVar, SNMP_Transpor
                // on a single interface
                                        NX_INTERFACE_INFO iface;
                                        memcpy(&iface, ifList->get(i), sizeof(NX_INTERFACE_INFO));
-                                       iface.dwIpAddr = ntohl(pVar->GetValueAsUInt());
+                                       iface.dwIpAddr = ntohl(pVar->getValueAsUInt());
                                        iface.dwIpNetMask = dwNetMask;
                                        ifList->add(&iface);
             }
                                else
                                {
-                                       ifList->get(i)->dwIpAddr = ntohl(pVar->GetValueAsUInt());
+                                       ifList->get(i)->dwIpAddr = ntohl(pVar->getValueAsUInt());
                                        ifList->get(i)->dwIpNetMask = dwNetMask;
                                }
             break;
@@ -234,7 +234,7 @@ static UINT32 HandlerIpAddr(UINT32 dwVersion, SNMP_Variable *pVar, SNMP_Transpor
        {
                TCHAR buffer[1024];
                DbgPrintf(6, _T("NetworkDeviceDriver::getInterfaces(%p): SNMP GET %s failed (error %d)"), 
-                       pTransport, SNMPConvertOIDToText(dwNameLen, oidName, buffer, 1024), (int)dwResult);
+                       pTransport, SNMPConvertOIDToText(nameLen, oidName, buffer, 1024), (int)dwResult);
                dwResult = SNMP_ERR_SUCCESS;    // continue walk
        }
    return dwResult;
@@ -413,7 +413,7 @@ static UINT32 HandlerVlanList(UINT32 version, SNMP_Variable *var, SNMP_Transport
 {
    VlanList *vlanList = (VlanList *)arg;
 
-       VlanInfo *vlan = new VlanInfo(var->GetName()->getValue()[var->GetName()->getLength() - 1], VLAN_PRM_BPORT);
+       VlanInfo *vlan = new VlanInfo(var->getName()->getValue()[var->getName()->getLength() - 1], VLAN_PRM_BPORT);
 
        TCHAR buffer[256];
        vlan->setName(var->getValueAsString(buffer, 256));
@@ -464,7 +464,7 @@ static void ParseVlanPorts(VlanList *vlanList, VlanInfo *vlan, BYTE map, int off
 static UINT32 HandlerVlanEgressPorts(UINT32 version, SNMP_Variable *var, SNMP_Transport *transport, void *arg)
 {
    VlanList *vlanList = (VlanList *)arg;
-       UINT32 vlanId = var->GetName()->getValue()[var->GetName()->getLength() - 1];
+       UINT32 vlanId = var->getName()->getValue()[var->getName()->getLength() - 1];
        VlanInfo *vlan = vlanList->findById(vlanId);
        if (vlan != NULL)
        {
index 1928ea4..f845d6d 100644 (file)
@@ -42,21 +42,21 @@ UINT32 LIBNXSRV_EXPORTABLE SnmpNewRequestId()
  * Note: buffer size is in bytes
  */
 UINT32 LIBNXSRV_EXPORTABLE SnmpGet(int version, SNMP_Transport *transport,
-                                   const TCHAR *szOidStr, const UINT32 *oidBinary, UINT32 dwOidLen, void *pValue,
-                                   UINT32 dwBufferSize, UINT32 dwFlags)
+                                   const TCHAR *szOidStr, const UINT32 *oidBinary, size_t dwOidLen, void *pValue,
+                                   size_t bufferSize, UINT32 dwFlags)
 {
    if (version != transport->getSnmpVersion())
    {
       int v = transport->getSnmpVersion();
       transport->setSnmpVersion(version);
       DbgPrintf(7, _T("SnmpGet: transport SNMP version %d changed to %d"), v, version);
-      UINT32 rc = SnmpGetEx(transport, szOidStr, oidBinary, dwOidLen, pValue, dwBufferSize, dwFlags, NULL);
+      UINT32 rc = SnmpGetEx(transport, szOidStr, oidBinary, dwOidLen, pValue, bufferSize, dwFlags, NULL);
       transport->setSnmpVersion(v);
       return rc;
    }
    else
    {
-      return SnmpGetEx(transport, szOidStr, oidBinary, dwOidLen, pValue, dwBufferSize, dwFlags, NULL);
+      return SnmpGetEx(transport, szOidStr, oidBinary, dwOidLen, pValue, bufferSize, dwFlags, NULL);
    }
 }
 
@@ -68,11 +68,12 @@ UINT32 LIBNXSRV_EXPORTABLE SnmpGet(int version, SNMP_Transport *transport,
  * Note: buffer size is in bytes
  */
 UINT32 LIBNXSRV_EXPORTABLE SnmpGetEx(SNMP_Transport *pTransport,
-                                     const TCHAR *szOidStr, const UINT32 *oidBinary, UINT32 dwOidLen, void *pValue,
-                                     UINT32 dwBufferSize, UINT32 dwFlags, UINT32 *dataLen)
+                                     const TCHAR *szOidStr, const UINT32 *oidBinary, size_t dwOidLen, void *pValue,
+                                     size_t bufferSize, UINT32 dwFlags, UINT32 *dataLen)
 {
    SNMP_PDU *pRqPDU, *pRespPDU;
-   UINT32 dwNameLen, pdwVarName[MAX_OID_LEN], dwResult = SNMP_ERR_SUCCESS;
+   UINT32 pdwVarName[MAX_OID_LEN], dwResult = SNMP_ERR_SUCCESS;
+   size_t nameLength;
 
        if (pTransport == NULL)
                return SNMP_ERR_COMM;
@@ -81,8 +82,8 @@ UINT32 LIBNXSRV_EXPORTABLE SnmpGetEx(SNMP_Transport *pTransport,
    pRqPDU = new SNMP_PDU(SNMP_GET_REQUEST, (UINT32)InterlockedIncrement(&s_requestId), pTransport->getSnmpVersion());
    if (szOidStr != NULL)
    {
-      dwNameLen = SNMPParseOID(szOidStr, pdwVarName, MAX_OID_LEN);
-      if (dwNameLen == 0)
+      nameLength = SNMPParseOID(szOidStr, pdwVarName, MAX_OID_LEN);
+      if (nameLength == 0)
       {
          nxlog_write(MSG_OID_PARSE_ERROR, EVENTLOG_ERROR_TYPE, "ssa", szOidStr, _T("SnmpGet"), pTransport->getPeerIpAddress());
          dwResult = SNMP_ERR_BAD_OID;
@@ -91,12 +92,12 @@ UINT32 LIBNXSRV_EXPORTABLE SnmpGetEx(SNMP_Transport *pTransport,
    else
    {
       memcpy(pdwVarName, oidBinary, dwOidLen * sizeof(UINT32));
-      dwNameLen = dwOidLen;
+      nameLength = dwOidLen;
    }
 
    if (dwResult == SNMP_ERR_SUCCESS)   // Still no errors
    {
-      pRqPDU->bindVariable(new SNMP_Variable(pdwVarName, dwNameLen));
+      pRqPDU->bindVariable(new SNMP_Variable(pdwVarName, nameLength));
       dwResult = pTransport->doRequest(pRqPDU, &pRespPDU, g_dwSNMPTimeout, 3);
 
       // Analyze response
@@ -107,18 +108,18 @@ UINT32 LIBNXSRV_EXPORTABLE SnmpGetEx(SNMP_Transport *pTransport,
          {
             SNMP_Variable *pVar = pRespPDU->getVariable(0);
 
-            if ((pVar->GetType() != ASN_NO_SUCH_OBJECT) &&
-                (pVar->GetType() != ASN_NO_SUCH_INSTANCE))
+            if ((pVar->getType() != ASN_NO_SUCH_OBJECT) &&
+                (pVar->getType() != ASN_NO_SUCH_INSTANCE))
             {
                if (dwFlags & SG_RAW_RESULT)
                {
-                                               pVar->getRawValue((BYTE *)pValue, dwBufferSize);
+                                               pVar->getRawValue((BYTE *)pValue, bufferSize);
                   if (dataLen != NULL)
-                     *dataLen = pVar->GetValueLength();
+                     *dataLen = (UINT32)pVar->getValueLength();
                }
                else if (dwFlags & SG_HSTRING_RESULT)
                {
-                                               int rawLen = (dwBufferSize - sizeof(TCHAR)) / 2 / sizeof(TCHAR);
+                                               size_t rawLen = (bufferSize - sizeof(TCHAR)) / 2 / sizeof(TCHAR);
                                                BYTE *raw = (BYTE *)malloc(rawLen);
                                                rawLen = (int)pVar->getRawValue(raw, rawLen);
                                                BinToStr(raw, rawLen, (TCHAR *)pValue);
@@ -126,35 +127,35 @@ UINT32 LIBNXSRV_EXPORTABLE SnmpGetEx(SNMP_Transport *pTransport,
                }
                else if (dwFlags & SG_STRING_RESULT)
                {
-                  pVar->getValueAsString((TCHAR *)pValue, dwBufferSize / sizeof(TCHAR));
+                  pVar->getValueAsString((TCHAR *)pValue, bufferSize / sizeof(TCHAR));
                }
                else if (dwFlags & SG_PSTRING_RESULT)
                {
                                                bool convert = true;
-                  pVar->getValueAsPrintableString((TCHAR *)pValue, dwBufferSize / sizeof(TCHAR), &convert);
+                  pVar->getValueAsPrintableString((TCHAR *)pValue, bufferSize / sizeof(TCHAR), &convert);
                }
                else
                {
-                  switch(pVar->GetType())
+                  switch(pVar->getType())
                   {
                      case ASN_INTEGER:
                      case ASN_UINTEGER32:
                      case ASN_COUNTER32:
                      case ASN_GAUGE32:
                      case ASN_TIMETICKS:
-                        *((LONG *)pValue) = pVar->GetValueAsInt();
+                        *((LONG *)pValue) = pVar->getValueAsInt();
                         break;
                      case ASN_IP_ADDR:
-                        *((UINT32 *)pValue) = ntohl(pVar->GetValueAsUInt());
+                        *((UINT32 *)pValue) = ntohl(pVar->getValueAsUInt());
                         break;
                      case ASN_OCTET_STRING:
-                        pVar->getValueAsString((TCHAR *)pValue, dwBufferSize / sizeof(TCHAR));
+                        pVar->getValueAsString((TCHAR *)pValue, bufferSize / sizeof(TCHAR));
                         break;
                      case ASN_OBJECT_ID:
-                        pVar->getValueAsString((TCHAR *)pValue, dwBufferSize / sizeof(TCHAR));
+                        pVar->getValueAsString((TCHAR *)pValue, bufferSize / sizeof(TCHAR));
                         break;
                      default:
-                        nxlog_write(MSG_SNMP_UNKNOWN_TYPE, EVENTLOG_ERROR_TYPE, "x", pVar->GetType());
+                        nxlog_write(MSG_SNMP_UNKNOWN_TYPE, EVENTLOG_ERROR_TYPE, "x", pVar->getType());
                         dwResult = SNMP_ERR_BAD_TYPE;
                         break;
                   }
@@ -197,7 +198,7 @@ UINT32 LIBNXSRV_EXPORTABLE SnmpWalk(UINT32 dwVersion, SNMP_Transport *pTransport
 
    // Get root
        UINT32 pdwRootName[MAX_OID_LEN];
-   UINT32 dwRootLen = SNMPParseOID(szRootOid, pdwRootName, MAX_OID_LEN);
+   size_t dwRootLen = SNMPParseOID(szRootOid, pdwRootName, MAX_OID_LEN);
    if (dwRootLen == 0)
    {
       nxlog_write(MSG_OID_PARSE_ERROR, EVENTLOG_ERROR_TYPE, "ssa", szRootOid, _T("SnmpWalk"), pTransport->getPeerIpAddress());
@@ -207,17 +208,17 @@ UINT32 LIBNXSRV_EXPORTABLE SnmpWalk(UINT32 dwVersion, SNMP_Transport *pTransport
        // First OID to request
    UINT32 pdwName[MAX_OID_LEN];
    memcpy(pdwName, pdwRootName, dwRootLen * sizeof(UINT32));
-   UINT32 dwNameLen = dwRootLen;
+   size_t nameLength = dwRootLen;
 
    // Walk the MIB
    UINT32 dwResult;
    BOOL bRunning = TRUE;
    UINT32 firstObjectName[MAX_OID_LEN];
-   UINT32 firstObjectNameLen = 0;
+   size_t firstObjectNameLen = 0;
    while(bRunning)
    {
       SNMP_PDU *pRqPDU = new SNMP_PDU(SNMP_GET_NEXT_REQUEST, (UINT32)InterlockedIncrement(&s_requestId), dwVersion);
-      pRqPDU->bindVariable(new SNMP_Variable(pdwName, dwNameLen));
+      pRqPDU->bindVariable(new SNMP_Variable(pdwName, nameLength));
           SNMP_PDU *pRespPDU;
       dwResult = pTransport->doRequest(pRqPDU, &pRespPDU, g_dwSNMPTimeout, 3);
 
@@ -229,28 +230,28 @@ UINT32 LIBNXSRV_EXPORTABLE SnmpWalk(UINT32 dwVersion, SNMP_Transport *pTransport
          {
             SNMP_Variable *pVar = pRespPDU->getVariable(0);
 
-            if ((pVar->GetType() != ASN_NO_SUCH_OBJECT) &&
-                (pVar->GetType() != ASN_NO_SUCH_INSTANCE))
+            if ((pVar->getType() != ASN_NO_SUCH_OBJECT) &&
+                (pVar->getType() != ASN_NO_SUCH_INSTANCE))
             {
                // Should we stop walking?
                                        // Some buggy SNMP agents may return first value after last one
                                        // (Toshiba Strata CTX do that for example), so last check is here
-               if ((pVar->GetName()->getLength() < dwRootLen) ||
-                   (memcmp(pdwRootName, pVar->GetName()->getValue(), dwRootLen * sizeof(UINT32))) ||
-                                                (pVar->GetName()->compare(pdwName, dwNameLen) == OID_EQUAL) ||
-                                                (pVar->GetName()->compare(firstObjectName, firstObjectNameLen) == OID_EQUAL))
+               if ((pVar->getName()->getLength() < dwRootLen) ||
+                   (memcmp(pdwRootName, pVar->getName()->getValue(), dwRootLen * sizeof(UINT32))) ||
+                                                (pVar->getName()->compare(pdwName, nameLength) == OID_EQUAL) ||
+                                                (pVar->getName()->compare(firstObjectName, firstObjectNameLen) == OID_EQUAL))
                {
                   bRunning = FALSE;
                   delete pRespPDU;
                   delete pRqPDU;
                   break;
                }
-               dwNameLen = pVar->GetName()->getLength();
-               memcpy(pdwName, pVar->GetName()->getValue(), dwNameLen * sizeof(UINT32));
+               nameLength = pVar->getName()->getLength();
+               memcpy(pdwName, pVar->getName()->getValue(), nameLength * sizeof(UINT32));
                                        if (firstObjectNameLen == 0)
                                        {
-                                               firstObjectNameLen = dwNameLen;
-                                               memcpy(firstObjectName, pdwName, dwNameLen * sizeof(UINT32));
+                                               firstObjectNameLen = nameLength;
+                                               memcpy(firstObjectName, pdwName, nameLength * sizeof(UINT32));
                                        }
 
                // Call user's callback function for processing
index 3591df3..16f7c87 100644 (file)
@@ -49,18 +49,17 @@ SNMP_ProxyTransport::~SNMP_ProxyTransport()
 int SNMP_ProxyTransport::sendMessage(SNMP_PDU *pdu)
 {
    BYTE *pBuffer;
-   UINT32 dwSize;
    int nRet = -1;
        CSCPMessage msg(m_pAgentConnection->getProtocolVersion());
 
-   dwSize = pdu->encode(&pBuffer, m_securityContext);
-   if (dwSize != 0)
+   size_t size = pdu->encode(&pBuffer, m_securityContext);
+   if (size != 0)
    {
                msg.SetCode(CMD_SNMP_REQUEST);
                msg.SetVariable(VID_IP_ADDRESS, m_dwIpAddr);
                msg.SetVariable(VID_PORT, m_wPort);
-               msg.SetVariable(VID_PDU_SIZE, dwSize);
-               msg.SetVariable(VID_PDU, pBuffer, dwSize);
+               msg.SetVariable(VID_PDU_SIZE, (UINT32)size);
+               msg.SetVariable(VID_PDU, pBuffer, (UINT32)size);
       free(pBuffer);
 
                m_pResponse = m_pAgentConnection->customRequest(&msg);
index ceaa151..0724a9e 100644 (file)
 
 #include "libnxsnmp.h"
 
-
-//
-// Decode BER-encoded variable
-//
-
-BOOL BER_DecodeIdentifier(BYTE *pRawData, UINT32 dwRawSize, UINT32 *pdwType, 
-                          UINT32 *pdwLength, BYTE **pData, UINT32 *pdwIdLength)
+/**
+ * Decode BER-encoded variable
+ */
+bool BER_DecodeIdentifier(BYTE *rawData, size_t rawSize, UINT32 *type, size_t *dataLength, BYTE **data, size_t *idLength)
 {
-   BOOL bResult = FALSE;
-   BYTE *pbCurrPos = pRawData;
+   bool bResult = false;
+   BYTE *pbCurrPos = rawData;
    UINT32 dwIdLength = 0;
 
-   *pdwType = (UINT32)(*pbCurrPos);
+   *type = (UINT32)(*pbCurrPos);
    pbCurrPos++;
    dwIdLength++;
 
    // Get length
    if ((*pbCurrPos & 0x80) == 0)
    {
-      *pdwLength = (UINT32)(*pbCurrPos);
+      *dataLength = (size_t)(*pbCurrPos);
       pbCurrPos++;
       dwIdLength++;
-      bResult = TRUE;
+      bResult = true;
    }
    else
    {
-      UINT32 dwLength = 0;
+      UINT32 length = 0;
       BYTE *pbTemp;
       int iNumBytes;
 
       iNumBytes = *pbCurrPos & 0x7F;
       pbCurrPos++;
       dwIdLength++;
-      pbTemp = ((BYTE *)&dwLength) + (4 - iNumBytes);
+      pbTemp = ((BYTE *)&length) + (4 - iNumBytes);
       if ((iNumBytes >= 1) && (iNumBytes <= 4))
       {
          while(iNumBytes > 0)
@@ -65,88 +62,86 @@ BOOL BER_DecodeIdentifier(BYTE *pRawData, UINT32 dwRawSize, UINT32 *pdwType,
             dwIdLength++;
             iNumBytes--;
          }
-         *pdwLength = ntohl(dwLength);
-         bResult = TRUE;
+         *dataLength = (size_t)ntohl(length);
+         bResult = true;
       }
    }
 
    // Set pointer to variable's data
-   *pData = pbCurrPos;
-   *pdwIdLength = dwIdLength;
+   *data = pbCurrPos;
+   *idLength = dwIdLength;
    return bResult;
 }
 
-
-//
-// Decode content of specified types
-//
-
-BOOL BER_DecodeContent(UINT32 dwType, BYTE *pData, UINT32 dwLength, BYTE *pBuffer)
+/**
+ * Decode content of specified types
+ */
+bool BER_DecodeContent(UINT32 type, BYTE *data, size_t length, BYTE *buffer)
 {
-   BOOL bResult = TRUE;
+   bool bResult = true;
 
-   switch(dwType)
+   switch(type)
    {
       case ASN_INTEGER:
       case ASN_COUNTER32:
       case ASN_GAUGE32:
       case ASN_TIMETICKS:
       case ASN_UINTEGER32:
-         if ((dwLength >= 1) && (dwLength <= 5))
+         if ((length >= 1) && (length <= 5))
          {
             UINT32 dwValue;
             BYTE *pbTemp;
 
             // Pre-fill buffer with 1's for negative values and 0's for positive
-            dwValue = (*pData & 0x80) ? 0xFFFFFFFF : 0;
+            dwValue = (*data & 0x80) ? 0xFFFFFFFF : 0;
 
             // For large unsigned integers, we can have length of 5, and first byte
             // is usually 0. In this case, we skip first byte.
-            if (dwLength == 5)
+            if (length == 5)
             {
-               pData++;
-               dwLength--;
+               data++;
+               length--;
             }
 
-            pbTemp = ((BYTE *)&dwValue) + (4 - dwLength);
-            while(dwLength > 0)
+            pbTemp = ((BYTE *)&dwValue) + (4 - length);
+            while(length > 0)
             {
-               *pbTemp++ = *pData++;
-               dwLength--;
+               *pbTemp++ = *data++;
+               length--;
             }
             dwValue = ntohl(dwValue);
-            memcpy(pBuffer, &dwValue, sizeof(UINT32));
+            memcpy(buffer, &dwValue, sizeof(UINT32));
          }
          else
          {
-            bResult = FALSE;  // We didn't expect more than 32 bit integers
+            bResult = false;  // We didn't expect more than 32 bit integers
          }
          break;
       case ASN_COUNTER64:
-         if ((dwLength >= 1) && (dwLength <= 9))
+         if ((length >= 1) && (length <= 9))
          {
             QWORD qwValue;
             BYTE *pbTemp;
 
             // Pre-fill buffer with 1's for negative values and 0's for positive
-            qwValue = (*pData & 0x80) ? _ULL(0xFFFFFFFFFFFFFFFF) : 0;
+            qwValue = (*data & 0x80) ? _ULL(0xFFFFFFFFFFFFFFFF) : 0;
 
             // For large unsigned integers, we can have length of 9, and first byte
             // is usually 0. In this case, we skip first byte.
-            if (dwLength == 9)
+            if (length == 9)
             {
-               pData++;
-               dwLength--;
+               data++;
+               length--;
             }
 
-            pbTemp = ((BYTE *)&qwValue) + (8 - dwLength);
-            while(dwLength > 0)
+            pbTemp = ((BYTE *)&qwValue) + (8 - length);
+            while(length > 0)
             {
-               *pbTemp++ = *pData++;
-               dwLength--;
+               *pbTemp++ = *data++;
+               length--;
             }
             qwValue = ntohq(qwValue);
-            memcpy(pBuffer, &qwValue, sizeof(QWORD));
+            memcpy(buffer, &qwValue, sizeof(QWORD));
          }
          else
          {
@@ -154,70 +149,69 @@ BOOL BER_DecodeContent(UINT32 dwType, BYTE *pData, UINT32 dwLength, BYTE *pBuffe
          }
          break;
       case ASN_OBJECT_ID:
-         if (dwLength > 0)
+         if (length > 0)
          {
             SNMP_OID *oid;
             UINT32 dwValue;
 
-            oid = (SNMP_OID *)pBuffer;
-            oid->pdwValue = (UINT32 *)malloc(sizeof(UINT32) * (dwLength + 1));
+            oid = (SNMP_OID *)buffer;
+            oid->value = (UINT32 *)malloc(sizeof(UINT32) * (length + 1));
 
             // First octet need special handling
-            oid->pdwValue[0] = *pData / 40;
-            oid->pdwValue[1] = *pData % 40;
-            pData++;
-            oid->dwLength = 2;
-            dwLength--;
+            oid->value[0] = *data / 40;
+            oid->value[1] = *data % 40;
+            data++;
+            oid->length = 2;
+            length--;
 
             // Parse remaining octets
-            while(dwLength > 0)
+            while(length > 0)
             {
                dwValue = 0;
 
                // Loop through octets with 8th bit set to 1
-               while((*pData & 0x80) && (dwLength > 0))
+               while((*data & 0x80) && (length > 0))
                {
-                  dwValue = (dwValue << 7) | (*pData & 0x7F);
-                  pData++;
-                  dwLength--;
+                  dwValue = (dwValue << 7) | (*data & 0x7F);
+                  data++;
+                  length--;
                }
 
                // Last octet in element
-               if (dwLength > 0)
+               if (length > 0)
                {
-                  oid->pdwValue[oid->dwLength++] = (dwValue << 7) | *pData;
-                  pData++;
-                  dwLength--;
+                  oid->value[oid->length++] = (dwValue << 7) | *data;
+                  data++;
+                  length--;
                }
             }
          }
          break;
       default:    // For unknown types, simply move content to buffer
-         memcpy(pBuffer, pData, dwLength);
+         memcpy(buffer, data, length);
          break;
    }
    return bResult;
 }
 
-
-//
-// Encode content
-//
-
-static LONG EncodeContent(UINT32 dwType, BYTE *pData, UINT32 dwDataLength, BYTE *pResult)
+/**
+ * Encode content
+ */
+static size_t EncodeContent(UINT32 type, BYTE *data, size_t dataLength, BYTE *pResult)
 {
-   LONG nBytes = 0;
+   size_t nBytes = 0;
    UINT32 dwTemp;
    QWORD qwTemp;
    BYTE *pTemp, sign;
-   int i, iOidLength;
+   int i;
+   size_t oidLength;
 
-   switch(dwType)
+   switch(type)
    {
       case ASN_NULL:
          break;
       case ASN_INTEGER:
-         dwTemp = htonl(*((UINT32 *)pData));
+         dwTemp = htonl(*((UINT32 *)data));
          pTemp = (BYTE *)&dwTemp;
          sign = (*pTemp & 0x80) ? 0xFF : 0;
          for(nBytes = 4; (*pTemp == sign) && (nBytes > 1); pTemp++, nBytes--);
@@ -236,7 +230,7 @@ static LONG EncodeContent(UINT32 dwType, BYTE *pData, UINT32 dwDataLength, BYTE
       case ASN_GAUGE32:
       case ASN_TIMETICKS:
       case ASN_UINTEGER32:
-         dwTemp = htonl(*((UINT32 *)pData));
+         dwTemp = htonl(*((UINT32 *)data));
          pTemp = (BYTE *)&dwTemp;
          for(nBytes = 4; (*pTemp == 0) && (nBytes > 1); pTemp++, nBytes--);
          if (*pTemp & 0x80)
@@ -251,7 +245,7 @@ static LONG EncodeContent(UINT32 dwType, BYTE *pData, UINT32 dwDataLength, BYTE
          }
          break;
       case ASN_COUNTER64:
-         qwTemp = htonq(*((QWORD *)pData));
+         qwTemp = htonq(*((QWORD *)data));
          pTemp = (BYTE *)&qwTemp;
          for(nBytes = 8; (*pTemp == 0) && (nBytes > 1); pTemp++, nBytes--);
          if (*pTemp & 0x80)
@@ -266,11 +260,11 @@ static LONG EncodeContent(UINT32 dwType, BYTE *pData, UINT32 dwDataLength, BYTE
          }
          break;
       case ASN_OBJECT_ID:
-         iOidLength = dwDataLength / sizeof(UINT32);
-         if (iOidLength > 1)
+         oidLength = dataLength / sizeof(UINT32);
+         if (oidLength > 1)
          {
             BYTE *pbCurrPos = pResult;
-            UINT32 j, dwValue, dwSize, *pdwCurrId = (UINT32 *)pData;
+            UINT32 j, dwValue, dwSize, *pdwCurrId = (UINT32 *)data;
             static UINT32 dwLengthMask[5] = { 0x0000007F, 0x00003FFF, 0x001FFFFF, 0x0FFFFFFF, 0xFFFFFFFF };
 
             // First two ids encoded in one byte
@@ -280,7 +274,7 @@ static LONG EncodeContent(UINT32 dwType, BYTE *pData, UINT32 dwDataLength, BYTE
             nBytes++;
 
             // Encode other ids
-            for(i = 2; i < iOidLength; i++, pdwCurrId++)
+            for(i = 2; i < oidLength; i++, pdwCurrId++)
             {
                dwValue = *pdwCurrId;
 
@@ -307,49 +301,46 @@ static LONG EncodeContent(UINT32 dwType, BYTE *pData, UINT32 dwDataLength, BYTE
                nBytes += dwSize;
             }
          }
-                       else if (iOidLength == 1)
+                       else if (oidLength == 1)
                        {
-                               *pResult = (BYTE)(*((UINT32 *)pData)) * 40;
+                               *pResult = (BYTE)(*((UINT32 *)data)) * 40;
                                nBytes++;
                        }
          break;
       default:
-         memcpy(pResult, pData, dwDataLength);
-         nBytes = dwDataLength;
+         memcpy(pResult, data, dataLength);
+         nBytes = dataLength;
          break;
    }
    return nBytes;
 }
 
-
-//
-// Encode identifier and content
-// Return value is size of encoded identifier and content in buffer
-// or 0 if there are not enough place in buffer or type is unknown
-//
-
-UINT32 BER_Encode(UINT32 dwType, BYTE *pData, UINT32 dwDataLength,
-                 BYTE *pBuffer, UINT32 dwBufferSize)
+/**
+ * Encode identifier and content
+ * Return value is size of encoded identifier and content in buffer
+ * or 0 if there are not enough place in buffer or type is unknown
+ */
+size_t BER_Encode(UINT32 type, BYTE *data, size_t dataLength, BYTE *buffer, size_t bufferSize)
 {
-   UINT32 dwBytes = 0;
-   BYTE *pbCurrPos = pBuffer, *pEncodedData;
-   LONG nDataBytes;
+   size_t bytes = 0;
+   BYTE *pbCurrPos = buffer, *pEncodedData;
+   size_t nDataBytes;
 
-   if (dwBufferSize < 2)
+   if (bufferSize < 2)
       return 0;
 
-   *pbCurrPos++ = (BYTE)dwType;
-   dwBytes++;
+   *pbCurrPos++ = (BYTE)type;
+   bytes++;
 
    // Encode content
-   pEncodedData = (BYTE *)malloc(dwDataLength);
-   nDataBytes = EncodeContent(dwType, pData, dwDataLength, pEncodedData);
+   pEncodedData = (BYTE *)malloc(dataLength);
+   nDataBytes = EncodeContent(type, data, dataLength, pEncodedData);
 
    // Encode length
    if (nDataBytes < 128)
    {
       *pbCurrPos++ = (BYTE)nDataBytes;
-      dwBytes++;
+      bytes++;
    }
    else
    {
@@ -363,7 +354,7 @@ UINT32 BER_Encode(UINT32 dwType, BYTE *pData, UINT32 dwDataLength,
          memmove(bLength, &bLength[i], nHdrBytes);
 
       // Check for available buffer size
-      if (dwBufferSize < (UINT32)nHdrBytes + dwBytes + 1)
+      if (bufferSize < (UINT32)nHdrBytes + bytes + 1)
       {
          free(pEncodedData);
          return 0;
@@ -373,20 +364,20 @@ UINT32 BER_Encode(UINT32 dwType, BYTE *pData, UINT32 dwDataLength,
       *pbCurrPos++ = (BYTE)(0x80 | nHdrBytes);
       memcpy(pbCurrPos, bLength, nHdrBytes);
       pbCurrPos += nHdrBytes;
-      dwBytes += nHdrBytes + 1;
+      bytes += nHdrBytes + 1;
    }
 
    // Copy encoded data to buffer
-   if (dwBufferSize >= dwBytes + nDataBytes)
+   if (bufferSize >= bytes + nDataBytes)
    {
       memcpy(pbCurrPos, pEncodedData, nDataBytes);
-      dwBytes += nDataBytes;
+      bytes += nDataBytes;
    }
    else
    {
-      dwBytes = 0;   // Buffer is too small
+      bytes = 0;   // Buffer is too small
    }
 
    free(pEncodedData);
-   return dwBytes;
+   return bytes;
 }
index a32cf98..95e2ee0 100644 (file)
@@ -1,7 +1,7 @@
 /* 
 ** NetXMS - Network Management System
 ** SNMP support library
-** Copyright (C) 2003-2010 Victor Kirhenshtein
+** Copyright (C) 2003-2014 Victor Kirhenshtein
 **
 ** This program is free software; you can redistribute it and/or modify
 ** it under the terms of the GNU Lesser General Public License as published by
@@ -35,7 +35,7 @@ SNMP_Engine::SNMP_Engine()
        m_engineTime = 0;
 }
 
-SNMP_Engine::SNMP_Engine(BYTE *id, int idLen, int engineBoots, int engineTime)
+SNMP_Engine::SNMP_Engine(BYTE *id, size_t idLen, int engineBoots, int engineTime)
 {
        m_idLen = min(idLen, SNMP_MAX_ENGINEID_LEN);
        memcpy(m_id, id, m_idLen);
@@ -51,11 +51,9 @@ SNMP_Engine::SNMP_Engine(SNMP_Engine *src)
        m_engineTime = src->m_engineTime;
 }
 
-
-//
-// Destructor
-//
-
+/**
+ * Destructor
+ */
 SNMP_Engine::~SNMP_Engine()
 {
 }
index 545947d..ebebba6 100644 (file)
@@ -38,8 +38,8 @@
  */
 typedef struct
 {
-   UINT32 dwLength;
-   UINT32 *pdwValue;
+   UINT32 length;
+   UINT32 *value;
 } SNMP_OID;
 
 /**
@@ -119,10 +119,8 @@ public:
 /**
  * Functions
  */
-BOOL BER_DecodeIdentifier(BYTE *pRawData, UINT32 dwRawSize, UINT32 *pdwType, 
-                          UINT32 *pdwLength, BYTE **pData, UINT32 *pdwIdLength);
-BOOL BER_DecodeContent(UINT32 dwType, BYTE *pData, UINT32 dwLength, BYTE *pBuffer);
-UINT32 BER_Encode(UINT32 dwType, BYTE *pData, UINT32 dwDataLength, 
-                 BYTE *pBuffer, UINT32 dwBufferSize);
+bool BER_DecodeIdentifier(BYTE *rawData, size_t rawSize, UINT32 *type, size_t *length, BYTE **data, size_t *idLength);
+bool BER_DecodeContent(UINT32 type, BYTE *data, size_t length, BYTE *buffer);
+size_t BER_Encode(UINT32 type, BYTE *data, size_t dataLength, BYTE *buffer, size_t bufferSize);
 
 #endif   /* _libnxsnmp_h_ */
index 5295275..74364f9 100644 (file)
 /**
  * Convert OID to text
  */
-TCHAR LIBNXSNMP_EXPORTABLE *SNMPConvertOIDToText(UINT32 dwLength, const UINT32 *pdwValue, TCHAR *pszBuffer, UINT32 dwBufferSize)
+TCHAR LIBNXSNMP_EXPORTABLE *SNMPConvertOIDToText(size_t length, const UINT32 *value, TCHAR *buffer, size_t bufferSize)
 {
-   UINT32 i, dwBufPos, dwNumChars;
-
-   pszBuffer[0] = 0;
-   for(i = 0, dwBufPos = 0; (i < dwLength) && (dwBufPos < dwBufferSize); i++)
+   buffer[0] = 0;
+   for(size_t i = 0, bufPos = 0; (i < length) && (bufPos < bufferSize); i++)
    {
-      dwNumChars = _sntprintf(&pszBuffer[dwBufPos], dwBufferSize - dwBufPos, _T(".%d"), pdwValue[i]);
-      dwBufPos += dwNumChars;
+      size_t numChars = _sntprintf(&buffer[bufPos], bufferSize - bufPos, _T(".%d"), value[i]);
+      bufPos += numChars;
    }
-       return pszBuffer;
+       return buffer;
 }
 
 /**
@@ -44,10 +42,10 @@ TCHAR LIBNXSNMP_EXPORTABLE *SNMPConvertOIDToText(UINT32 dwLength, const UINT32 *
  * Will return 0 if OID is invalid or empty, and OID length (in UINT32s) on success
  * Buffer size should be given in number of UINT32s
  */
-UINT32 LIBNXSNMP_EXPORTABLE SNMPParseOID(const TCHAR *pszText, UINT32 *pdwBuffer, UINT32 dwBufferSize)
+size_t LIBNXSNMP_EXPORTABLE SNMPParseOID(const TCHAR *text, UINT32 *buffer, size_t bufferSize)
 {
-   TCHAR *pCurr = (TCHAR *)pszText, *pEnd, szNumber[32];
-   UINT32 dwLength = 0;
+   TCHAR *pCurr = (TCHAR *)text, *pEnd, szNumber[32];
+   size_t length = 0;
    int iNumLen;
 
    if (*pCurr == 0)
@@ -57,16 +55,16 @@ UINT32 LIBNXSNMP_EXPORTABLE SNMPParseOID(const TCHAR *pszText, UINT32 *pdwBuffer
    if (*pCurr == _T('.'))
       pCurr++;
 
-   for(pEnd = pCurr; (*pEnd != 0) && (dwLength < dwBufferSize); pCurr = pEnd + 1)
+   for(pEnd = pCurr; (*pEnd != 0) && (length < bufferSize); pCurr = pEnd + 1)
    {
       for(iNumLen = 0, pEnd = pCurr; (*pEnd >= _T('0')) && (*pEnd <= _T('9')); pEnd++, iNumLen++);
       if ((iNumLen > 15) || ((*pEnd != _T('.')) && (*pEnd != 0)))
          return 0;   // Number is definitely too large or not a number
       memcpy(szNumber, pCurr, sizeof(TCHAR) * iNumLen);
       szNumber[iNumLen] = 0;
-      pdwBuffer[dwLength++] = _tcstoul(szNumber, NULL, 10);
+      buffer[length++] = _tcstoul(szNumber, NULL, 10);
    }
-   return dwLength;
+   return length;
 }
 
 /**
@@ -75,14 +73,14 @@ UINT32 LIBNXSNMP_EXPORTABLE SNMPParseOID(const TCHAR *pszText, UINT32 *pdwBuffer
 bool LIBNXSNMP_EXPORTABLE SNMPIsCorrectOID(const TCHAR *oid)
 {
    UINT32 buffer[MAX_OID_LEN];
-   UINT32 len = SNMPParseOID(oid, buffer, MAX_OID_LEN);
+   size_t len = SNMPParseOID(oid, buffer, MAX_OID_LEN);
    return (len > 0);
 }
 
 /**
  * Check if given OID is syntaxically correct
  */
-UINT32 LIBNXSNMP_EXPORTABLE SNMPGetOIDLength(const TCHAR *oid)
+size_t LIBNXSNMP_EXPORTABLE SNMPGetOIDLength(const TCHAR *oid)
 {
    UINT32 buffer[MAX_OID_LEN];
    return SNMPParseOID(oid, buffer, MAX_OID_LEN);
index 6bed211..14d2d2d 100644 (file)
@@ -28,9 +28,9 @@
  */
 SNMP_ObjectId::SNMP_ObjectId()
 {
-   m_dwLength = 0;
-   m_pdwValue = NULL;
-   m_pszTextValue = NULL;
+   m_length = 0;
+   m_value = NULL;
+   m_textValue = NULL;
 }
 
 /**
@@ -38,15 +38,15 @@ SNMP_ObjectId::SNMP_ObjectId()
  */
 SNMP_ObjectId::SNMP_ObjectId(SNMP_ObjectId *src)
 {
-   m_dwLength = src->m_dwLength;
-   m_pdwValue = (UINT32 *)nx_memdup(src->m_pdwValue, sizeof(UINT32) * m_dwLength);
-   if (src->m_pszTextValue != NULL)
+   m_length = src->m_length;
+   m_value = (UINT32 *)nx_memdup(src->m_value, sizeof(UINT32) * m_length);
+   if (src->m_textValue != NULL)
    {
-      m_pszTextValue = _tcsdup(src->m_pszTextValue);
+      m_textValue = _tcsdup(src->m_textValue);
    }
    else
    {
-      m_pszTextValue = NULL;
+      m_textValue = NULL;
       convertToText();
    }
 }
@@ -54,11 +54,11 @@ SNMP_ObjectId::SNMP_ObjectId(SNMP_ObjectId *src)
 /**
  * Create OID from existing binary value
  */
-SNMP_ObjectId::SNMP_ObjectId(UINT32 dwLength, const UINT32 *pdwValue)
+SNMP_ObjectId::SNMP_ObjectId(size_t length, const UINT32 *value)
 {
-   m_dwLength = dwLength;
-   m_pdwValue = (UINT32 *)nx_memdup(pdwValue, sizeof(UINT32) * dwLength);
-   m_pszTextValue = NULL;
+   m_length = (UINT32)length;
+   m_value = (UINT32 *)nx_memdup(value, sizeof(UINT32) * length);
+   m_textValue = NULL;
    convertToText();
 }
 
@@ -67,8 +67,8 @@ SNMP_ObjectId::SNMP_ObjectId(UINT32 dwLength, const UINT32 *pdwValue)
  */
 SNMP_ObjectId::~SNMP_ObjectId()
 {
-   safe_free(m_pdwValue);
-   safe_free(m_pszTextValue);
+   safe_free(m_value);
+   safe_free(m_textValue);
 }
 
 /**
@@ -76,8 +76,8 @@ SNMP_ObjectId::~SNMP_ObjectId()
  */
 void SNMP_ObjectId::convertToText()
 {
-   m_pszTextValue = (TCHAR *)realloc(m_pszTextValue, sizeof(TCHAR) * (m_dwLength * 6 + 1));
-   SNMPConvertOIDToText(m_dwLength, m_pdwValue, m_pszTextValue, m_dwLength * 6 + 1);
+   m_textValue = (TCHAR *)realloc(m_textValue, sizeof(TCHAR) * (m_length * 6 + 1));
+   SNMPConvertOIDToText(m_length, m_value, m_textValue, m_length * 6 + 1);
 }
 
 /**
@@ -85,27 +85,26 @@ void SNMP_ObjectId::convertToText()
  */
 int SNMP_ObjectId::compare(const TCHAR *pszOid)
 {
-   UINT32 dwBuffer[MAX_OID_LEN], dwLength;
-
-   dwLength = SNMPParseOID(pszOid, dwBuffer, MAX_OID_LEN);
-   if (dwLength == 0)
+   UINT32 dwBuffer[MAX_OID_LEN];
+   size_t length = SNMPParseOID(pszOid, dwBuffer, MAX_OID_LEN);
+   if (length == 0)
       return OID_ERROR;
-   return compare(dwBuffer, dwLength);
+   return compare(dwBuffer, length);
 }
 
 /**
  * Compare this OID to another
  */
-int SNMP_ObjectId::compare(const UINT32 *pdwOid, UINT32 dwLen)
+int SNMP_ObjectId::compare(const UINT32 *oid, size_t length)
 {
-   if ((pdwOid == NULL) || (dwLen == 0) || (m_pdwValue == NULL))
+   if ((oid == NULL) || (length == 0) || (m_value == NULL))
       return OID_ERROR;
 
-   if (memcmp(m_pdwValue, pdwOid, min(dwLen, m_dwLength) * sizeof(UINT32)))
+   if (memcmp(m_value, oid, min(length, m_length) * sizeof(UINT32)))
       return OID_NOT_EQUAL;
 
-   return (dwLen == m_dwLength) ? OID_EQUAL : 
-            ((dwLen < m_dwLength) ? OID_SHORTER : OID_LONGER);
+   return (length == m_length) ? OID_EQUAL : 
+            ((length < m_length) ? OID_SHORTER : OID_LONGER);
 }
 
 /**
@@ -121,11 +120,11 @@ int SNMP_ObjectId::compare(SNMP_ObjectId *oid)
 /**
  * Set new value
  */
-void SNMP_ObjectId::setValue(UINT32 *pdwValue, UINT32 dwLength)
+void SNMP_ObjectId::setValue(UINT32 *value, size_t length)
 {
-   safe_free(m_pdwValue);
-   m_dwLength = dwLength;
-   m_pdwValue = (UINT32 *)nx_memdup(pdwValue, sizeof(UINT32) * dwLength);
+   safe_free(m_value);
+   m_length = (UINT32)length;
+   m_value = (UINT32 *)nx_memdup(value, sizeof(UINT32) * length);
    convertToText();
 }
 
@@ -136,7 +135,7 @@ void SNMP_ObjectId::setValue(UINT32 *pdwValue, UINT32 dwLength)
  */
 void SNMP_ObjectId::extend(UINT32 subId)
 {
-   m_pdwValue = (UINT32 *)realloc(m_pdwValue, sizeof(UINT32) * (m_dwLength + 1));
-   m_pdwValue[m_dwLength++] = subId;
+   m_value = (UINT32 *)realloc(m_value, sizeof(UINT32) * (m_length + 1));
+   m_value[m_length++] = subId;
    convertToText();
 }
index b9e6da7..56f0a8e 100644 (file)
@@ -1,7 +1,7 @@
 /* 
 ** NetXMS - Network Management System
 ** SNMP support library
-** Copyright (C) 2003-2013 Victor Kirhenshtein
+** Copyright (C) 2003-2014 Victor Kirhenshtein
 **
 ** This program is free software; you can redistribute it and/or modify
 ** it under the terms of the GNU Lesser General Public License as published by
@@ -64,18 +64,17 @@ static struct
  */
 SNMP_PDU::SNMP_PDU()
 {
-   m_dwVersion = SNMP_VERSION_1;
-   m_dwCommand = SNMP_INVALID_PDU;
-   m_dwNumVariables = 0;
-   m_ppVarList = NULL;
+   m_version = SNMP_VERSION_1;
+   m_command = SNMP_INVALID_PDU;
+   m_variables = new ObjectArray<SNMP_Variable>(0, 16, true);
    m_pEnterprise = NULL;
    m_dwErrorCode = 0;
    m_dwErrorIndex = 0;
    m_dwRqId = 0;
        m_msgId = 0;
        m_flags = 0;
-   m_iTrapType = 0;
-   m_iSpecificTrap = 0;
+   m_trapType = 0;
+   m_specificTrap = 0;
        m_contextEngineIdLen = 0;
        m_contextName[0] = 0;
        m_msgMaxSize = SNMP_DEFAULT_MSG_MAX_SIZE;
@@ -88,18 +87,17 @@ SNMP_PDU::SNMP_PDU()
  */
 SNMP_PDU::SNMP_PDU(UINT32 dwCommand, UINT32 dwRqId, UINT32 dwVersion)
 {
-   m_dwVersion = dwVersion;
-   m_dwCommand = dwCommand;
-   m_dwNumVariables = 0;
-   m_ppVarList = NULL;
+   m_version = dwVersion;
+   m_command = dwCommand;
+   m_variables = new ObjectArray<SNMP_Variable>(0, 16, true);
    m_pEnterprise = NULL;
    m_dwErrorCode = 0;
    m_dwErrorIndex = 0;
    m_dwRqId = dwRqId;
        m_msgId = dwRqId;
        m_flags = 0;
-   m_iTrapType = 0;
-   m_iSpecificTrap = 0;
+   m_trapType = 0;
+   m_specificTrap = 0;
        m_contextEngineIdLen = 0;
        m_contextName[0] = 0;
        m_msgMaxSize = SNMP_DEFAULT_MSG_MAX_SIZE;
@@ -108,36 +106,57 @@ SNMP_PDU::SNMP_PDU(UINT32 dwCommand, UINT32 dwRqId, UINT32 dwVersion)
 }
 
 /**
+ * Copy destructor
+ */
+SNMP_PDU::SNMP_PDU(SNMP_PDU *src)
+{
+   m_version = src->m_version;
+   m_command = src->m_command;
+   m_variables = new ObjectArray<SNMP_Variable>(0, 16, true);
+   for(int i = 0; i < src->m_variables->size(); i++)
+      m_variables->add(new SNMP_Variable(src->m_variables->get(i)));
+   m_pEnterprise = (src->m_pEnterprise != NULL) ? new SNMP_ObjectId(src->m_pEnterprise) : NULL;
+   m_dwErrorCode = src->m_dwErrorCode;
+   m_dwErrorIndex = src->m_dwErrorIndex;
+   m_dwRqId = src->m_dwRqId;
+       m_msgId = src->m_msgId;
+       m_flags = src->m_flags;
+   m_trapType = src->m_trapType;
+   m_specificTrap = src->m_specificTrap;
+       m_contextEngineIdLen = src->m_contextEngineIdLen;
+       strcpy(m_contextName, src->m_contextName);
+       m_msgMaxSize = src->m_msgMaxSize;
+   m_authObject = (src->m_authObject != NULL) ? strdup(src->m_authObject) : NULL;
+       m_reportable = src->m_reportable;
+}
+
+/**
  * SNMP_PDU destructor
  */
 SNMP_PDU::~SNMP_PDU()
 {
-   UINT32 i;
-
    delete m_pEnterprise;
-   for(i = 0; i < m_dwNumVariables; i++)
-      delete m_ppVarList[i];
-   safe_free(m_ppVarList);
+   delete m_variables;
        safe_free(m_authObject);
 }
 
 /**
  * Parse single variable binding
  */
-BOOL SNMP_PDU::parseVariable(BYTE *pData, UINT32 dwVarLength)
+bool SNMP_PDU::parseVariable(BYTE *pData, size_t varLength)
 {
    SNMP_Variable *var;
-   BOOL success = TRUE;
+   bool success = true;
 
    var = new SNMP_Variable;
-   if (var->Parse(pData, dwVarLength))
+   if (var->parse(pData, varLength))
    {
       bindVariable(var);
    }
    else
    {
       delete var;
-      success = FALSE;
+      success = false;
    }
    return success;
 }
@@ -145,68 +164,70 @@ BOOL SNMP_PDU::parseVariable(BYTE *pData, UINT32 dwVarLength)
 /**
  * Parse variable bindings
  */
-BOOL SNMP_PDU::parseVarBinds(BYTE *pData, UINT32 dwPDULength)
+bool SNMP_PDU::parseVarBinds(BYTE *pData, size_t pduLength)
 {
    BYTE *pbCurrPos;
-   UINT32 dwType, dwLength, dwBindingLength, dwIdLength;
+   UINT32 dwType;
+   size_t dwLength, dwBindingLength, idLength;
 
    // Varbind section should be a SEQUENCE
-   if (!BER_DecodeIdentifier(pData, dwPDULength, &dwType, &dwBindingLength, &pbCurrPos, &dwIdLength))
-      return FALSE;
+   if (!BER_DecodeIdentifier(pData, pduLength, &dwType, &dwBindingLength, &pbCurrPos, &idLength))
+      return false;
    if (dwType != ASN_SEQUENCE)
-      return FALSE;
+      return false;
 
    while(dwBindingLength > 0)
    {
-      if (!BER_DecodeIdentifier(pbCurrPos, dwPDULength, &dwType, &dwLength, &pbCurrPos, &dwIdLength))
-         return FALSE;
+      if (!BER_DecodeIdentifier(pbCurrPos, pduLength, &dwType, &dwLength, &pbCurrPos, &idLength))
+         return false;
       if (dwType != ASN_SEQUENCE)
-         return FALSE;  // Every binding is a sequence
+         return false;  // Every binding is a sequence
       if (dwLength > dwBindingLength)
-         return FALSE;     // Invalid length
+         return false;     // Invalid length
 
       if (!parseVariable(pbCurrPos, dwLength))
-         return FALSE;
-      dwBindingLength -= dwLength + dwIdLength;
+         return false;
+      dwBindingLength -= dwLength + idLength;
       pbCurrPos += dwLength;
    }
 
-   return TRUE;
+   return true;
 }
 
 /**
  * Parse generic PDU content
  */
-BOOL SNMP_PDU::parsePduContent(BYTE *pData, UINT32 dwPDULength)
+bool SNMP_PDU::parsePduContent(BYTE *pData, size_t pduLength)
 {
-   UINT32 dwType, dwLength ,dwIdLength;
+   UINT32 dwType;
+   size_t dwLength, idLength;
    BYTE *pbCurrPos = pData;
-   BOOL bResult = FALSE;
+   bool bResult = false;
 
    // Request ID
-   if (BER_DecodeIdentifier(pbCurrPos, dwPDULength, &dwType, &dwLength, &pbCurrPos, &dwIdLength))
+   if (BER_DecodeIdentifier(pbCurrPos, pduLength, &dwType, &dwLength, &pbCurrPos, &idLength))
    {
       if ((dwType == ASN_INTEGER) &&
           BER_DecodeContent(dwType, pbCurrPos, dwLength, (BYTE *)&m_dwRqId))
       {
-         dwPDULength -= dwLength + dwIdLength;
+         pduLength -= dwLength + idLength;
          pbCurrPos += dwLength;
-         bResult = TRUE;
+         bResult = true;
       }
    }
 
    // Error code
    if (bResult)
    {
-      bResult = FALSE;
-      if (BER_DecodeIdentifier(pbCurrPos, dwPDULength, &dwType, &dwLength, &pbCurrPos, &dwIdLength))
+      bResult = false;
+      if (BER_DecodeIdentifier(pbCurrPos, pduLength, &dwType, &dwLength, &pbCurrPos, &idLength))
       {
          if ((dwType == ASN_INTEGER) &&
              BER_DecodeContent(dwType, pbCurrPos, dwLength, (BYTE *)&m_dwErrorCode))
          {
-            dwPDULength -= dwLength + dwIdLength;
+            pduLength -= dwLength + idLength;
             pbCurrPos += dwLength;
-            bResult = TRUE;
+            bResult = true;
          }
       }
    }
@@ -214,21 +235,21 @@ BOOL SNMP_PDU::parsePduContent(BYTE *pData, UINT32 dwPDULength)
    // Error index
    if (bResult)
    {
-      bResult = FALSE;
-      if (BER_DecodeIdentifier(pbCurrPos, dwPDULength, &dwType, &dwLength, &pbCurrPos, &dwIdLength))
+      bResult = false;
+      if (BER_DecodeIdentifier(pbCurrPos, pduLength, &dwType, &dwLength, &pbCurrPos, &idLength))
       {
          if ((dwType == ASN_INTEGER) &&
              BER_DecodeContent(dwType, pbCurrPos, dwLength, (BYTE *)&m_dwErrorIndex))
          {
-            dwPDULength -= dwLength + dwIdLength;
+            pduLength -= dwLength + idLength;
             pbCurrPos += dwLength;
-            bResult = TRUE;
+            bResult = true;
          }
       }
    }
 
    if (bResult)
-      bResult = parseVarBinds(pbCurrPos, dwPDULength);
+      bResult = parseVarBinds(pbCurrPos, pduLength);
 
    return bResult;
 }
@@ -236,16 +257,17 @@ BOOL SNMP_PDU::parsePduContent(BYTE *pData, UINT32 dwPDULength)
 /**
  * Parse version 1 TRAP PDU
  */
-BOOL SNMP_PDU::parseTrapPDU(BYTE *pData, UINT32 dwPDULength)
+bool SNMP_PDU::parseTrapPDU(BYTE *pData, size_t pduLength)
 {
-   UINT32 dwType, dwLength, dwIdLength;
+   UINT32 dwType;
+   size_t dwLength, idLength;
    BYTE *pbCurrPos = pData;
    SNMP_OID *oid;
    UINT32 dwBuffer;
-   BOOL bResult = FALSE;
+   bool bResult = false;
 
    // Enterprise ID
-   if (BER_DecodeIdentifier(pbCurrPos, dwPDULength, &dwType, &dwLength, &pbCurrPos, &dwIdLength))
+   if (BER_DecodeIdentifier(pbCurrPos, pduLength, &dwType, &dwLength, &pbCurrPos, &idLength))
    {
       if (dwType == ASN_OBJECT_ID)
       {
@@ -253,13 +275,13 @@ BOOL SNMP_PDU::parseTrapPDU(BYTE *pData, UINT32 dwPDULength)
          memset(oid, 0, sizeof(SNMP_OID));
          if (BER_DecodeContent(dwType, pbCurrPos, dwLength, (BYTE *)oid))
          {
-            m_pEnterprise = new SNMP_ObjectId(oid->dwLength, oid->pdwValue);
-            dwPDULength -= dwLength + dwIdLength;
+            m_pEnterprise = new SNMP_ObjectId(oid->length, oid->value);
+            pduLength -= dwLength + idLength;
             pbCurrPos += dwLength;
 
-            bResult = TRUE;
+            bResult = true;
          }
-         safe_free(oid->pdwValue);
+         safe_free(oid->value);
          free(oid);
       }
    }
@@ -267,15 +289,15 @@ BOOL SNMP_PDU::parseTrapPDU(BYTE *pData, UINT32 dwPDULength)
    // Agent's address
    if (bResult)
    {
-      bResult = FALSE;
-      if (BER_DecodeIdentifier(pbCurrPos, dwPDULength, &dwType, &dwLength, &pbCurrPos, &dwIdLength))
+      bResult = false;
+      if (BER_DecodeIdentifier(pbCurrPos, pduLength, &dwType, &dwLength, &pbCurrPos, &idLength))
       {
          if ((dwType == ASN_IP_ADDR) && (dwLength == 4) &&
              BER_DecodeContent(dwType, pbCurrPos, dwLength, (BYTE *)&m_dwAgentAddr))
          {
-            dwPDULength -= dwLength + dwIdLength;
+            pduLength -= dwLength + idLength;
             pbCurrPos += dwLength;
-            bResult = TRUE;
+            bResult = true;
          }
       }
    }
@@ -283,16 +305,16 @@ BOOL SNMP_PDU::parseTrapPDU(BYTE *pData, UINT32 dwPDULength)
    // Generic trap type
    if (bResult)
    {
-      bResult = FALSE;
-      if (BER_DecodeIdentifier(pbCurrPos, dwPDULength, &dwType, &dwLength, &pbCurrPos, &dwIdLength))
+      bResult = false;
+      if (BER_DecodeIdentifier(pbCurrPos, pduLength, &dwType, &dwLength, &pbCurrPos, &idLength))
       {
          if ((dwType == ASN_INTEGER) &&
              BER_DecodeContent(dwType, pbCurrPos, dwLength, (BYTE *)&dwBuffer))
          {
-            dwPDULength -= dwLength + dwIdLength;
+            pduLength -= dwLength + idLength;
             pbCurrPos += dwLength;
-            m_iTrapType = (int)dwBuffer;
-            bResult = TRUE;
+            m_trapType = (int)dwBuffer;
+            bResult = true;
          }
       }
    }
@@ -300,16 +322,16 @@ BOOL SNMP_PDU::parseTrapPDU(BYTE *pData, UINT32 dwPDULength)
    // Enterprise trap type
    if (bResult)
    {
-      bResult = FALSE;
-      if (BER_DecodeIdentifier(pbCurrPos, dwPDULength, &dwType, &dwLength, &pbCurrPos, &dwIdLength))
+      bResult = false;
+      if (BER_DecodeIdentifier(pbCurrPos, pduLength, &dwType, &dwLength, &pbCurrPos, &idLength))
       {
          if ((dwType == ASN_INTEGER) &&
              BER_DecodeContent(dwType, pbCurrPos, dwLength, (BYTE *)&dwBuffer))
          {
-            dwPDULength -= dwLength + dwIdLength;
+            pduLength -= dwLength + idLength;
             pbCurrPos += dwLength;
-            m_iSpecificTrap = (int)dwBuffer;
-            bResult = TRUE;
+            m_specificTrap = (int)dwBuffer;
+            bResult = true;
          }
       }
    }
@@ -317,25 +339,25 @@ BOOL SNMP_PDU::parseTrapPDU(BYTE *pData, UINT32 dwPDULength)
    // Timestamp
    if (bResult)
    {
-      bResult = FALSE;
-      if (BER_DecodeIdentifier(pbCurrPos, dwPDULength, &dwType, &dwLength, &pbCurrPos, &dwIdLength))
+      bResult = false;
+      if (BER_DecodeIdentifier(pbCurrPos, pduLength, &dwType, &dwLength, &pbCurrPos, &idLength))
       {
          if ((dwType == ASN_TIMETICKS) &&
              BER_DecodeContent(dwType, pbCurrPos, dwLength, (BYTE *)&m_dwTimeStamp))
          {
-            dwPDULength -= dwLength + dwIdLength;
+            pduLength -= dwLength + idLength;
             pbCurrPos += dwLength;
-            bResult = TRUE;
+            bResult = true;
          }
       }
    }
 
    if (bResult)
-      bResult = parseVarBinds(pbCurrPos, dwPDULength);
+      bResult = parseVarBinds(pbCurrPos, pduLength);
 
    if (bResult)
    {
-      if (m_iTrapType < 6)
+      if (m_trapType < 6)
       {
          static UINT32 pdwStdOid[6][10] =
          {
@@ -348,12 +370,12 @@ BOOL SNMP_PDU::parseTrapPDU(BYTE *pData, UINT32 dwPDULength)
          };
 
          // For standard trap types, create standard V2 Enterprise ID
-         m_pEnterprise->setValue(pdwStdOid[m_iTrapType], 10);
+         m_pEnterprise->setValue(pdwStdOid[m_trapType], 10);
       }
       else
       {
          m_pEnterprise->extend(0);
-         m_pEnterprise->extend(m_iSpecificTrap);
+         m_pEnterprise->extend(m_specificTrap);
       }
    }
 
@@ -363,23 +385,22 @@ BOOL SNMP_PDU::parseTrapPDU(BYTE *pData, UINT32 dwPDULength)
 /**
  * Parse version 2 TRAP or INFORM-REQUEST PDU
  */
-BOOL SNMP_PDU::parseTrap2PDU(BYTE *pData, UINT32 dwPDULength)
+bool SNMP_PDU::parseTrap2PDU(BYTE *pData, size_t pduLength)
 {
-   BOOL bResult;
+   bool bResult;
    static UINT32 pdwStdTrapPrefix[9] = { 1, 3, 6, 1, 6, 3, 1, 1, 5 };
 
-   bResult = parsePduContent(pData, dwPDULength);
+   bResult = parsePduContent(pData, pduLength);
    if (bResult)
    {
-      bResult = FALSE;
-      if (m_dwNumVariables >= 2)
+      bResult = false;
+      if (m_variables->size() >= 2)
       {
-         if (m_ppVarList[1]->GetType() == ASN_OBJECT_ID)
+         SNMP_Variable *var = m_variables->get(1);
+         if (var->getType() == ASN_OBJECT_ID)
          {
-            m_pEnterprise = new SNMP_ObjectId(
-               m_ppVarList[1]->GetValueLength() / sizeof(UINT32), 
-               (UINT32 *)m_ppVarList[1]->GetValue());
-            bResult = TRUE;
+            m_pEnterprise = new SNMP_ObjectId(var->getValueLength() / sizeof(UINT32), (UINT32 *)var->getValue());
+            bResult = true;
          }
       }
 
@@ -389,13 +410,13 @@ BOOL SNMP_PDU::parseTrap2PDU(BYTE *pData, UINT32 dwPDULength)
          if ((m_pEnterprise->compare(pdwStdTrapPrefix, 9) == OID_SHORTER) &&
              (m_pEnterprise->getLength() == 10))
          {
-            m_iTrapType = m_pEnterprise->getValue()[9];
-            m_iSpecificTrap = 0;
+            m_trapType = m_pEnterprise->getValue()[9];
+            m_specificTrap = 0;
          }
          else
          {
-            m_iTrapType = 6;
-            m_iSpecificTrap = m_pEnterprise->getValue()[m_pEnterprise->getLength() - 1];
+            m_trapType = 6;
+            m_specificTrap = m_pEnterprise->getValue()[m_pEnterprise->getLength() - 1];
          }
       }
    }
@@ -405,39 +426,40 @@ BOOL SNMP_PDU::parseTrap2PDU(BYTE *pData, UINT32 dwPDULength)
 /**
  * Parse version 3 header
  */
-BOOL SNMP_PDU::parseV3Header(BYTE *header, UINT32 headerLength)
+bool SNMP_PDU::parseV3Header(BYTE *header, size_t headerLength)
 {
-       UINT32 type, length, idLength, remLength = headerLength;
+       UINT32 type;
+   size_t length, idLength, remLength = headerLength;
        BYTE *currPos = header;
 
    // Message id
    if (!BER_DecodeIdentifier(currPos, remLength, &type, &length, &currPos, &idLength))
-      return FALSE;
+      return false;
    if (type != ASN_INTEGER)
-      return FALSE;   // Should be of integer type
+      return false;   // Should be of integer type
    if (!BER_DecodeContent(type, currPos, length, (BYTE *)&m_msgId))
-      return FALSE;   // Error parsing content
+      return false;   // Error parsing content
    currPos += length;
    remLength -= length + idLength;
 
    // Message max size
    if (!BER_DecodeIdentifier(currPos, remLength, &type, &length, &currPos, &idLength))
-      return FALSE;
+      return false;
    if (type != ASN_INTEGER)
-      return FALSE;   // Should be of integer type
+      return false;   // Should be of integer type
    if (!BER_DecodeContent(type, currPos, length, (BYTE *)&m_msgMaxSize))
-      return FALSE;   // Error parsing content
+      return false;   // Error parsing content
    currPos += length;
    remLength -= length + idLength;
 
    // Message flags
    if (!BER_DecodeIdentifier(currPos, remLength, &type, &length, &currPos, &idLength))
-      return FALSE;
+      return false;
    if ((type != ASN_OCTET_STRING) || (length != 1))
-      return FALSE;
+      return false;
        BYTE flags;
    if (!BER_DecodeContent(type, currPos, length, &flags))
-      return FALSE;   // Error parsing content
+      return false;   // Error parsing content
        m_reportable = (flags & SNMP_REPORTABLE_FLAG) ? true : false;
        m_flags = flags;
    currPos += length;
@@ -445,63 +467,63 @@ BOOL SNMP_PDU::parseV3Header(BYTE *header, UINT32 headerLength)
 
    // Security model
    if (!BER_DecodeIdentifier(currPos, remLength, &type, &length, &currPos, &idLength))
-      return FALSE;
+      return false;
    if (type != ASN_INTEGER)
-      return FALSE;   // Should be of integer type
+      return false;   // Should be of integer type
        UINT32 securityModel;
    if (!BER_DecodeContent(type, currPos, length, (BYTE *)&securityModel))
-      return FALSE;   // Error parsing content
+      return false;   // Error parsing content
        m_securityModel = (int)securityModel;
 
-       return TRUE;
+       return true;
 }
 
 /**
  * Parse V3 USM security parameters
  */
-BOOL SNMP_PDU::parseV3SecurityUsm(BYTE *data, UINT32 dataLength)
+bool SNMP_PDU::parseV3SecurityUsm(BYTE *data, size_t dataLength)
 {
-       UINT32 type, length, idLength, remLength = dataLength;
+       UINT32 type;
+   size_t length, idLength, engineIdLen, remLength = dataLength;
        UINT32 engineBoots, engineTime;
        BYTE *currPos = data;
        BYTE engineId[SNMP_MAX_ENGINEID_LEN];
-       int engineIdLen;
 
        // Should be sequence
    if (!BER_DecodeIdentifier(currPos, remLength, &type, &length, &currPos, &idLength))
-      return FALSE;
+      return false;
    if (type != ASN_SEQUENCE)
-      return FALSE;
+      return false;
    remLength = length;
 
        // Engine ID
    if (!BER_DecodeIdentifier(currPos, remLength, &type, &length, &currPos, &idLength))
-      return FALSE;
+      return false;
    if (type != ASN_OCTET_STRING)
-      return FALSE;
+      return false;
        engineIdLen = length;
    if (!BER_DecodeContent(type, currPos, length, engineId))
-      return FALSE;   // Error parsing content
+      return false;   // Error parsing content
    currPos += length;
    remLength -= length + idLength;
 
        // engine boots
    if (!BER_DecodeIdentifier(currPos, remLength, &type, &length, &currPos, &idLength))
-      return FALSE;
+      return false;
    if (type != ASN_INTEGER)
-      return FALSE;
+      return false;
    if (!BER_DecodeContent(type, currPos, length, (BYTE *)&engineBoots))
-      return FALSE;   // Error parsing content
+      return false;   // Error parsing content
    currPos += length;
    remLength -= length + idLength;
 
        // engine time
    if (!BER_DecodeIdentifier(currPos, remLength, &type, &length, &currPos, &idLength))
-      return FALSE;
+      return false;
    if (type != ASN_INTEGER)
-      return FALSE;
+      return false;
    if (!BER_DecodeContent(type, currPos, length, (BYTE *)&engineTime))
-      return FALSE;   // Error parsing content
+      return false;   // Error parsing content
    currPos += length;
    remLength -= length + idLength;
 
@@ -509,15 +531,15 @@ BOOL SNMP_PDU::parseV3SecurityUsm(BYTE *data, UINT32 dataLength)
 
        // User name
    if (!BER_DecodeIdentifier(currPos, remLength, &type, &length, &currPos, &idLength))
-      return FALSE;
+      return false;
    if (type != ASN_OCTET_STRING)
-      return FALSE;
+      return false;
        m_authObject = (char *)malloc(length + 1);
        if (!BER_DecodeContent(type, currPos, length, (BYTE *)m_authObject))
        {
                free(m_authObject);
                m_authObject = NULL;
-               return FALSE;
+               return false;
        }
        m_authObject[length] = 0;
    currPos += length;
@@ -525,9 +547,9 @@ BOOL SNMP_PDU::parseV3SecurityUsm(BYTE *data, UINT32 dataLength)
 
        // Message signature
    if (!BER_DecodeIdentifier(currPos, remLength, &type, &length, &currPos, &idLength))
-      return FALSE;
+      return false;
    if (type != ASN_OCTET_STRING)
-      return FALSE;
+      return false;
        memcpy(m_signature, currPos, min(length, 12));
        memset(currPos, 0, min(length, 12));    // Replace with 0 to generate correct hash in validate method
    currPos += length;
@@ -535,40 +557,41 @@ BOOL SNMP_PDU::parseV3SecurityUsm(BYTE *data, UINT32 dataLength)
 
        // Encryption salt
    if (!BER_DecodeIdentifier(currPos, remLength, &type, &length, &currPos, &idLength))
-      return FALSE;
+      return false;
    if (type != ASN_OCTET_STRING)
-      return FALSE;
+      return false;
        memcpy(m_salt, currPos, min(length, 8));
 
-       return TRUE;
+       return true;
 }
 
 /**
  * Parse V3 scoped PDU
  */
-BOOL SNMP_PDU::parseV3ScopedPdu(BYTE *data, UINT32 dataLength)
+bool SNMP_PDU::parseV3ScopedPdu(BYTE *data, size_t dataLength)
 {
-       UINT32 type, length, idLength, remLength = dataLength;
+       UINT32 type;
+   size_t length, idLength, remLength = dataLength;
        BYTE *currPos = data;
 
    // Context engine ID
    if (!BER_DecodeIdentifier(currPos, remLength, &type, &length, &currPos, &idLength))
-      return FALSE;
+      return false;
    if ((type != ASN_OCTET_STRING) || (length > SNMP_MAX_ENGINEID_LEN))
-      return FALSE;
+      return false;
        m_contextEngineIdLen = length;
    if (!BER_DecodeContent(type, currPos, length, m_contextEngineId))
-      return FALSE;   // Error parsing content
+      return false;   // Error parsing content
    currPos += length;
    remLength -= length + idLength;
        
    // Context name
    if (!BER_DecodeIdentifier(currPos, remLength, &type, &length, &currPos, &idLength))
-      return FALSE;
+      return false;
    if ((type != ASN_OCTET_STRING) || (length >= SNMP_MAX_CONTEXT_NAME))
-      return FALSE;
+      return false;
    if (!BER_DecodeContent(type, currPos, length, (BYTE *)m_contextName))
-      return FALSE;   // Error parsing content
+      return false;   // Error parsing content
        m_contextName[length] = 0;
    currPos += length;
    remLength -= length + idLength;
@@ -579,11 +602,12 @@ BOOL SNMP_PDU::parseV3ScopedPdu(BYTE *data, UINT32 dataLength)
 /**
  * Parse PDU
  */
-BOOL SNMP_PDU::parsePdu(BYTE *pdu, UINT32 pduLength)
+bool SNMP_PDU::parsePdu(BYTE *pdu, size_t pduLength)
 {
        BYTE *content;
-       UINT32 length, idLength, type;
-       BOOL success;
+       size_t length, idLength;
+   UINT32 type;
+       bool success;
 
    success = BER_DecodeIdentifier(pdu, pduLength, &type, &length, &content, &idLength);
    if (success)
@@ -591,39 +615,39 @@ BOOL SNMP_PDU::parsePdu(BYTE *pdu, UINT32 pduLength)
       switch(type)
       {
          case ASN_TRAP_V1_PDU:
-            m_dwCommand = SNMP_TRAP;
+            m_command = SNMP_TRAP;
             success = parseTrapPDU(content, length);
             break;
          case ASN_TRAP_V2_PDU:
-            m_dwCommand = SNMP_TRAP;
+            m_command = SNMP_TRAP;
             success = parseTrap2PDU(content, length);
             break;
          case ASN_GET_REQUEST_PDU:
-            m_dwCommand = SNMP_GET_REQUEST;
+            m_command = SNMP_GET_REQUEST;
             success = parsePduContent(content, length);
             break;
          case ASN_GET_NEXT_REQUEST_PDU:
-            m_dwCommand = SNMP_GET_NEXT_REQUEST;
+            m_command = SNMP_GET_NEXT_REQUEST;
             success = parsePduContent(content, length);
             break;
          case ASN_RESPONSE_PDU:
-            m_dwCommand = SNMP_RESPONSE;
+            m_command = SNMP_RESPONSE;
             success = parsePduContent(content, length);
             break;
          case ASN_SET_REQUEST_PDU:
-            m_dwCommand = SNMP_SET_REQUEST;
+            m_command = SNMP_SET_REQUEST;
             success = parsePduContent(content, length);
             break;
          case ASN_INFORM_REQUEST_PDU:
-            m_dwCommand = SNMP_INFORM_REQUEST;
+            m_command = SNMP_INFORM_REQUEST;
             success = parseTrap2PDU(content, length);
             break;
          case ASN_REPORT_PDU:
-            m_dwCommand = SNMP_REPORT;
+            m_command = SNMP_REPORT;
             success = parsePduContent(content, length);
             break;
          default:
-                               success = FALSE;
+                               success = false;
             break;
       }
    }
@@ -633,13 +657,13 @@ BOOL SNMP_PDU::parsePdu(BYTE *pdu, UINT32 pduLength)
 /**
  * Validate V3 signed message
  */
-BOOL SNMP_PDU::validateSignedMessage(BYTE *msg, UINT32 msgLen, SNMP_SecurityContext *securityContext)
+bool SNMP_PDU::validateSignedMessage(BYTE *msg, size_t msgLen, SNMP_SecurityContext *securityContext)
 {
        BYTE k1[64], k2[64], hash[20], *buffer;
        int i;
 
        if (securityContext == NULL)
-               return FALSE;   // Unable to validate message without security context
+               return false;   // Unable to validate message without security context
 
        switch(securityContext->getAuthMethod())
        {
@@ -700,17 +724,17 @@ BOOL SNMP_PDU::validateSignedMessage(BYTE *msg, UINT32 msgLen, SNMP_SecurityCont
 /**
  * Decrypt data in packet
  */
-BOOL SNMP_PDU::decryptData(BYTE *data, UINT32 length, BYTE *decryptedData, SNMP_SecurityContext *securityContext)
+bool SNMP_PDU::decryptData(BYTE *data, size_t length, BYTE *decryptedData, SNMP_SecurityContext *securityContext)
 {
 #ifdef _WITH_ENCRYPTION
        if (securityContext == NULL)
-               return FALSE;   // Cannot decrypt message without valid security context
+               return false;   // Cannot decrypt message without valid security context
 
        if (securityContext->getPrivMethod() == SNMP_ENCRYPT_DES)
        {
 #ifndef OPENSSL_NO_DES
                if (length % 8 != 0)
-                       return FALSE;   // Encrypted data length must be an integral multiple of 8
+                       return false;   // Encrypted data length must be an integral multiple of 8
 
                DES_cblock key;
                DES_key_schedule schedule;
@@ -722,9 +746,9 @@ BOOL SNMP_PDU::decryptData(BYTE *data, UINT32 length, BYTE *decryptedData, SNMP_
                for(int i = 0; i < 8; i++)
                        iv[i] ^= m_salt[i];
 
-               DES_ncbc_encrypt(data, decryptedData, length, &schedule, &iv, DES_DECRYPT);
+               DES_ncbc_encrypt(data, decryptedData, (long)length, &schedule, &iv, DES_DECRYPT);
 #else
-               return FALSE;  // Compiled without DES support
+               return false;  // Compiled without DES support
 #endif
        }
        else if (securityContext->getPrivMethod() == SNMP_ENCRYPT_AES)
@@ -753,70 +777,71 @@ BOOL SNMP_PDU::decryptData(BYTE *data, UINT32 length, BYTE *decryptedData, SNMP_
                int num = 0;
                AES_cfb128_encrypt(data, decryptedData, length, &key, iv, &num, AES_DECRYPT);
 #else
-               return FALSE;  // Compiled without AES support
+               return false;  // Compiled without AES support
 #endif
        }
        else
        {
-               return FALSE;
+               return false;
        }
-       return TRUE;
+       return true;
 #else
-       return FALSE;   // No encryption support
+       return false;   // No encryption support
 #endif
 }
 
 /**
  * Create PDU from packet
  */
-BOOL SNMP_PDU::parse(BYTE *pRawData, UINT32 dwRawLength, SNMP_SecurityContext *securityContext, bool engineIdAutoupdate)
+bool SNMP_PDU::parse(BYTE *rawData, size_t rawLength, SNMP_SecurityContext *securityContext, bool engineIdAutoupdate)
 {
    BYTE *pbCurrPos;
-   UINT32 dwType, dwLength, dwPacketLength, dwIdLength;
-   BOOL bResult = FALSE;
+   UINT32 dwType;
+   size_t dwLength, dwPacketLength, idLength;
+   bool bResult = false;
 
    // Packet start
-   if (!BER_DecodeIdentifier(pRawData, dwRawLength, &dwType, &dwPacketLength, &pbCurrPos, &dwIdLength))
-      return FALSE;
+   if (!BER_DecodeIdentifier(rawData, rawLength, &dwType, &dwPacketLength, &pbCurrPos, &idLength))
+      return false;
    if (dwType != ASN_SEQUENCE)
-      return FALSE;   // Packet should start with SEQUENCE
+      return false;   // Packet should start with SEQUENCE
 
    // Version
-   if (!BER_DecodeIdentifier(pbCurrPos, dwPacketLength, &dwType, &dwLength, &pbCurrPos, &dwIdLength))
-      return FALSE;
+   if (!BER_DecodeIdentifier(pbCurrPos, dwPacketLength, &dwType, &dwLength, &pbCurrPos, &idLength))
+      return false;
    if (dwType != ASN_INTEGER)
-      return FALSE;   // Version field should be of integer type
-   if (!BER_DecodeContent(dwType, pbCurrPos, dwLength, (BYTE *)&m_dwVersion))
-      return FALSE;   // Error parsing content of version field
+      return false;   // Version field should be of integer type
+   if (!BER_DecodeContent(dwType, pbCurrPos, dwLength, (BYTE *)&m_version))
+      return false;   // Error parsing content of version field
    pbCurrPos += dwLength;
-   dwPacketLength -= dwLength + dwIdLength;
-   if ((m_dwVersion != SNMP_VERSION_1) && (m_dwVersion != SNMP_VERSION_2C) && ((m_dwVersion != SNMP_VERSION_3)))
-      return FALSE;   // Unsupported SNMP version
+   dwPacketLength -= dwLength + idLength;
+   if ((m_version != SNMP_VERSION_1) && (m_version != SNMP_VERSION_2C) && ((m_version != SNMP_VERSION_3)))
+      return false;   // Unsupported SNMP version
 
-       if (m_dwVersion == SNMP_VERSION_3)
+       if (m_version == SNMP_VERSION_3)
        {
                // V3 header
-               if (!BER_DecodeIdentifier(pbCurrPos, dwPacketLength, &dwType, &dwLength, &pbCurrPos, &dwIdLength))
-                       return FALSE;
+               if (!BER_DecodeIdentifier(pbCurrPos, dwPacketLength, &dwType, &dwLength, &pbCurrPos, &idLength))
+                       return false;
                if (dwType != ASN_SEQUENCE)
-                       return FALSE;   // Should be sequence
+                       return false;   // Should be sequence
                
                // We don't need BER_DecodeContent because sequence does not need any special decoding
                if (!parseV3Header(pbCurrPos, dwLength))
-                       return FALSE;
+                       return false;
                pbCurrPos += dwLength;
-               dwPacketLength -= dwLength + dwIdLength;
+               dwPacketLength -= dwLength + idLength;
 
                // Security parameters
-               if (!BER_DecodeIdentifier(pbCurrPos, dwPacketLength, &dwType, &dwLength, &pbCurrPos, &dwIdLength))
-                       return FALSE;
+               if (!BER_DecodeIdentifier(pbCurrPos, dwPacketLength, &dwType, &dwLength, &pbCurrPos, &idLength))
+                       return false;
                if (dwType != ASN_OCTET_STRING)
-                       return FALSE;   // Should be octet string
+                       return false;   // Should be octet string
 
                if (m_securityModel == SNMP_SECURITY_MODEL_USM)
                {
                        if (!parseV3SecurityUsm(pbCurrPos, dwLength))
-                               return FALSE;
+                               return false;
 
                        if (engineIdAutoupdate && (m_authoritativeEngine.getIdLen() > 0) && (securityContext != NULL))
                        {
@@ -825,29 +850,29 @@ BOOL SNMP_PDU::parse(BYTE *pRawData, UINT32 dwRawLength, SNMP_SecurityContext *s
 
                        if (m_flags & SNMP_AUTH_FLAG)
                        {
-                               if (!validateSignedMessage(pRawData, dwRawLength, securityContext))
-                                       return FALSE;
+                               if (!validateSignedMessage(rawData, rawLength, securityContext))
+                                       return false;
                        }
                }
 
                pbCurrPos += dwLength;
-               dwPacketLength -= dwLength + dwIdLength;
+               dwPacketLength -= dwLength + idLength;
 
                // Decrypt scoped PDU if needed
                if ((m_securityModel == SNMP_SECURITY_MODEL_USM) && (m_flags & SNMP_PRIV_FLAG))
                {
                        BYTE *scopedPduStart = pbCurrPos;
 
-                       if (!BER_DecodeIdentifier(pbCurrPos, dwPacketLength, &dwType, &dwLength, &pbCurrPos, &dwIdLength))
-                               return FALSE;
+                       if (!BER_DecodeIdentifier(pbCurrPos, dwPacketLength, &dwType, &dwLength, &pbCurrPos, &idLength))
+                               return false;
                        if (dwType != ASN_OCTET_STRING)
-                               return FALSE;   // Should be encoded as octet string
+                               return false;   // Should be encoded as octet string
 
                        BYTE *decryptedPdu = (BYTE *)malloc(dwLength);
                        if (!decryptData(pbCurrPos, dwLength, decryptedPdu, securityContext))
                        {
                                free(decryptedPdu);
-                               return FALSE;
+                               return false;
                        }
 
                        pbCurrPos = scopedPduStart;
@@ -856,29 +881,29 @@ BOOL SNMP_PDU::parse(BYTE *pRawData, UINT32 dwRawLength, SNMP_SecurityContext *s
                }
 
                // Scoped PDU
-               if (!BER_DecodeIdentifier(pbCurrPos, dwPacketLength, &dwType, &dwLength, &pbCurrPos, &dwIdLength))
-                       return FALSE;
+               if (!BER_DecodeIdentifier(pbCurrPos, dwPacketLength, &dwType, &dwLength, &pbCurrPos, &idLength))
+                       return false;
                if (dwType != ASN_SEQUENCE)
-                       return FALSE;   // Should be sequence
+                       return false;   // Should be sequence
                bResult = parseV3ScopedPdu(pbCurrPos, dwLength);
        }
        else
        {
                // Community string
-               if (!BER_DecodeIdentifier(pbCurrPos, dwPacketLength, &dwType, &dwLength, &pbCurrPos, &dwIdLength))
-                       return FALSE;
+               if (!BER_DecodeIdentifier(pbCurrPos, dwPacketLength, &dwType, &dwLength, &pbCurrPos, &idLength))
+                       return false;
                if (dwType != ASN_OCTET_STRING)
-                       return FALSE;   // Community field should be of string type
+                       return false;   // Community field should be of string type
                m_authObject = (char *)malloc(dwLength + 1);
                if (!BER_DecodeContent(dwType, pbCurrPos, dwLength, (BYTE *)m_authObject))
                {
                        free(m_authObject);
                        m_authObject = NULL;
-                       return FALSE;   // Error parsing content of version field
+                       return false;   // Error parsing content of version field
                }
                m_authObject[dwLength] = 0;
                pbCurrPos += dwLength;
-               dwPacketLength -= dwLength + dwIdLength;
+               dwPacketLength -= dwLength + idLength;
 
                bResult = parsePdu(pbCurrPos, dwLength);
        }
@@ -889,9 +914,11 @@ BOOL SNMP_PDU::parse(BYTE *pRawData, UINT32 dwRawLength, SNMP_SecurityContext *s
 /**
  * Create packet from PDU
  */
-UINT32 SNMP_PDU::encode(BYTE **ppBuffer, SNMP_SecurityContext *securityContext)
+size_t SNMP_PDU::encode(BYTE **ppBuffer, SNMP_SecurityContext *securityContext)
 {
-   UINT32 i, dwBufferSize, dwBytes, dwVarBindsSize, dwPDUType, dwPDUSize, dwPacketSize, dwValue;
+   int i;
+   UINT32 dwValue, dwPDUType;
+   size_t dwBufferSize, dwBytes, dwVarBindsSize, dwPDUSize, dwPacketSize;
    BYTE *pbCurrPos, *pBlock, *pVarBinds, *pPacket;
 
        // Replace context name if defined in security context
@@ -902,25 +929,29 @@ UINT32 SNMP_PDU::encode(BYTE **ppBuffer, SNMP_SecurityContext *securityContext)
        }
 
    // Estimate required buffer size and allocate it
-   for(dwBufferSize = 1024, i = 0; i < m_dwNumVariables; i++)
-      dwBufferSize += m_ppVarList[i]->GetValueLength() + m_ppVarList[i]->GetName()->getLength() * 4 + 16;
+   for(dwBufferSize = 1024, i = 0; i < m_variables->size(); i++)
+   {
+      SNMP_Variable *var = m_variables->get(i);
+      dwBufferSize += var->getValueLength() + var->getName()->getLength() * 4 + 16;
+   }
    pBlock = (BYTE *)malloc(dwBufferSize);
    pVarBinds = (BYTE *)malloc(dwBufferSize);
    pPacket = (BYTE *)malloc(dwBufferSize);
 
    // Encode variables
-   for(i = 0, dwVarBindsSize = 0, pbCurrPos = pVarBinds; i < m_dwNumVariables; i++)
+   for(i = 0, dwVarBindsSize = 0, pbCurrPos = pVarBinds; i < m_variables->size(); i++)
    {
-      dwBytes = m_ppVarList[i]->Encode(pbCurrPos, dwBufferSize - dwVarBindsSize);
+      SNMP_Variable *var = m_variables->get(i);
+      dwBytes = var->encode(pbCurrPos, dwBufferSize - dwVarBindsSize);
       pbCurrPos += dwBytes;
       dwVarBindsSize += dwBytes;
    }
 
    // Determine PDU type
    for(i = 0; PDU_type_to_command[i].dwType != 0; i++)
-      if (((m_dwVersion == (UINT32)PDU_type_to_command[i].iVersion) ||
+      if (((m_version == (UINT32)PDU_type_to_command[i].iVersion) ||
            (PDU_type_to_command[i].iVersion == -1)) &&
-          (PDU_type_to_command[i].dwCommand == m_dwCommand))
+          (PDU_type_to_command[i].dwCommand == m_command))
       {
          dwPDUType = PDU_type_to_command[i].dwType;
          break;
@@ -945,13 +976,13 @@ UINT32 SNMP_PDU::encode(BYTE **ppBuffer, SNMP_SecurityContext *securityContext)
             dwPDUSize += dwBytes;
             pbCurrPos += dwBytes;
 
-            dwValue = (UINT32)m_iTrapType;
+            dwValue = (UINT32)m_trapType;
             dwBytes = BER_Encode(ASN_INTEGER, (BYTE *)&dwValue, sizeof(UINT32), 
                                  pbCurrPos, dwBufferSize - dwPDUSize);
             dwPDUSize += dwBytes;
             pbCurrPos += dwBytes;
 
-            dwValue = (UINT32)m_iSpecificTrap;
+            dwValue = (UINT32)m_specificTrap;
             dwBytes = BER_Encode(ASN_INTEGER, (BYTE *)&dwValue, sizeof(UINT32), 
                                  pbCurrPos, dwBufferSize - dwPDUSize);
             dwPDUSize += dwBytes;
@@ -981,7 +1012,7 @@ UINT32 SNMP_PDU::encode(BYTE **ppBuffer, SNMP_SecurityContext *securityContext)
       }
 
       // Encode varbinds into PDU
-               if ((m_dwVersion != SNMP_VERSION_3) || ((securityContext != NULL) && (securityContext->getAuthoritativeEngine().getIdLen() != 0)))
+               if ((m_version != SNMP_VERSION_3) || ((securityContext != NULL) && (securityContext->getAuthoritativeEngine().getIdLen() != 0)))
                {
                        dwBytes = BER_Encode(ASN_SEQUENCE, pVarBinds, dwVarBindsSize, 
                                                                                pbCurrPos, dwBufferSize - dwPDUSize);
@@ -997,12 +1028,12 @@ UINT32 SNMP_PDU::encode(BYTE **ppBuffer, SNMP_SecurityContext *securityContext)
       pbCurrPos = pPacket;
       dwPacketSize = 0;
 
-      dwBytes = BER_Encode(ASN_INTEGER, (BYTE *)&m_dwVersion, sizeof(UINT32), 
+      dwBytes = BER_Encode(ASN_INTEGER, (BYTE *)&m_version, sizeof(UINT32), 
                            pbCurrPos, dwBufferSize);
       dwPacketSize += dwBytes;
       pbCurrPos += dwBytes;
 
-               if (m_dwVersion == SNMP_VERSION_3)
+               if (m_version == SNMP_VERSION_3)
                {
                        // Generate encryption salt if packet has to be encrypted
                        if (securityContext->needEncryption())
@@ -1026,7 +1057,7 @@ UINT32 SNMP_PDU::encode(BYTE **ppBuffer, SNMP_SecurityContext *securityContext)
                                if (securityContext->getPrivMethod() == SNMP_ENCRYPT_DES)
                                {
 #ifndef OPENSSL_NO_DES
-                                       UINT32 encSize = (dwBytes % 8 == 0) ? dwBytes : (dwBytes + (8 - (dwBytes % 8)));
+                                       size_t encSize = (dwBytes % 8 == 0) ? dwBytes : (dwBytes + (8 - (dwBytes % 8)));
                                        BYTE *encryptedPdu = (BYTE *)malloc(encSize);
 
                                        DES_cblock key;
@@ -1039,7 +1070,7 @@ UINT32 SNMP_PDU::encode(BYTE **ppBuffer, SNMP_SecurityContext *securityContext)
                                        for(int i = 0; i < 8; i++)
                                                iv[i] ^= m_salt[i];
 
-                                       DES_ncbc_encrypt(pbCurrPos, encryptedPdu, dwBytes, &schedule, &iv, DES_ENCRYPT);
+                                       DES_ncbc_encrypt(pbCurrPos, encryptedPdu, (long)dwBytes, &schedule, &iv, DES_ENCRYPT);
                                        dwBytes = BER_Encode(ASN_OCTET_STRING, encryptedPdu, encSize, pbCurrPos, dwBufferSize - dwPacketSize);
                                        free(encryptedPdu);
 #else
@@ -1101,7 +1132,7 @@ UINT32 SNMP_PDU::encode(BYTE **ppBuffer, SNMP_SecurityContext *securityContext)
       dwBytes = BER_Encode(ASN_SEQUENCE, pPacket, dwPacketSize, *ppBuffer, dwPacketSize + 6);
 
                // Sign message
-               if ((m_dwVersion == SNMP_VERSION_3) && securityContext->needAuthentication())
+               if ((m_version == SNMP_VERSION_3) && securityContext->needAuthentication())
                {
                        signMessage(*ppBuffer, dwBytes, securityContext);
                }
@@ -1121,11 +1152,8 @@ cleanup:
 /**
  * Encode version 3 header
  */
-UINT32 SNMP_PDU::encodeV3Header(BYTE *buffer, UINT32 bufferSize, SNMP_SecurityContext *securityContext)
+size_t SNMP_PDU::encodeV3Header(BYTE *buffer, size_t bufferSize, SNMP_SecurityContext *securityContext)
 {
-       BYTE header[256];
-       UINT32 bytes, securityModel = securityContext->getSecurityModel();
-
        BYTE flags = m_reportable ? SNMP_REPORTABLE_FLAG : 0;
        if (securityContext->getAuthoritativeEngine().getIdLen() != 0)
        {
@@ -1139,9 +1167,11 @@ UINT32 SNMP_PDU::encodeV3Header(BYTE *buffer, UINT32 bufferSize, SNMP_SecurityCo
                }
        }
 
-       bytes = BER_Encode(ASN_INTEGER, (BYTE *)&m_msgId, sizeof(UINT32), header, 256);
+       BYTE header[256];
+       size_t bytes = BER_Encode(ASN_INTEGER, (BYTE *)&m_msgId, sizeof(UINT32), header, 256);
        bytes += BER_Encode(ASN_INTEGER, (BYTE *)&m_msgMaxSize, sizeof(UINT32), &header[bytes], 256 - bytes);
        bytes += BER_Encode(ASN_OCTET_STRING, &flags, 1, &header[bytes], 256 - bytes);
+   UINT32 securityModel = securityContext->getSecurityModel();
        bytes += BER_Encode(ASN_INTEGER, (BYTE *)&securityModel, sizeof(UINT32), &header[bytes], 256 - bytes);
        return BER_Encode(ASN_SEQUENCE, header, bytes, buffer, bufferSize);
 }
@@ -1149,9 +1179,9 @@ UINT32 SNMP_PDU::encodeV3Header(BYTE *buffer, UINT32 bufferSize, SNMP_SecurityCo
 /**
  * Encode version 3 security parameters
  */
-UINT32 SNMP_PDU::encodeV3SecurityParameters(BYTE *buffer, UINT32 bufferSize, SNMP_SecurityContext *securityContext)
+size_t SNMP_PDU::encodeV3SecurityParameters(BYTE *buffer, size_t bufferSize, SNMP_SecurityContext *securityContext)
 {
-       UINT32 bytes;
+       size_t bytes;
 
        if ((securityContext != NULL) && (securityContext->getSecurityModel() == SNMP_SECURITY_MODEL_USM))
        {
@@ -1215,11 +1245,11 @@ UINT32 SNMP_PDU::encodeV3SecurityParameters(BYTE *buffer, UINT32 bufferSize, SNM
 /**
  * Encode versionj 3 scoped PDU
  */
-UINT32 SNMP_PDU::encodeV3ScopedPDU(UINT32 pduType, BYTE *pdu, UINT32 pduSize, BYTE *buffer, UINT32 bufferSize)
+size_t SNMP_PDU::encodeV3ScopedPDU(UINT32 pduType, BYTE *pdu, size_t pduSize, BYTE *buffer, size_t bufferSize)
 {
-       UINT32 spduLen = pduSize + SNMP_MAX_CONTEXT_NAME + SNMP_MAX_ENGINEID_LEN + 32;
+       size_t spduLen = pduSize + SNMP_MAX_CONTEXT_NAME + SNMP_MAX_ENGINEID_LEN + 32;
        BYTE *spdu = (BYTE *)malloc(spduLen);
-       UINT32 bytes;
+       size_t bytes;
 
        bytes = BER_Encode(ASN_OCTET_STRING, m_contextEngineId, (UINT32)m_contextEngineIdLen, spdu, spduLen);
        bytes += BER_Encode(ASN_OCTET_STRING, (BYTE *)m_contextName, (UINT32)strlen(m_contextName), &spdu[bytes], spduLen - bytes);
@@ -1253,7 +1283,7 @@ UINT32 SNMP_PDU::encodeV3ScopedPDU(UINT32 pduType, BYTE *pdu, UINT32 pduSize, BY
  *   5) Replace the msgAuthenticationParameters field with MAC obtained in
  *      the step 4.
  */
-void SNMP_PDU::signMessage(BYTE *msg, UINT32 msgLen, SNMP_SecurityContext *securityContext)
+void SNMP_PDU::signMessage(BYTE *msg, size_t msgLen, SNMP_SecurityContext *securityContext)
 {
        int i, hashPos;
 
@@ -1327,15 +1357,13 @@ void SNMP_PDU::signMessage(BYTE *msg, UINT32 msgLen, SNMP_SecurityContext *secur
  */
 void SNMP_PDU::bindVariable(SNMP_Variable *pVar)
 {
-   m_ppVarList = (SNMP_Variable **)realloc(m_ppVarList, sizeof(SNMP_Variable *) * (m_dwNumVariables + 1));
-   m_ppVarList[m_dwNumVariables] = pVar;
-   m_dwNumVariables++;
+   m_variables->add(pVar);
 }
 
 /**
  * Set context engine ID
  */
-void SNMP_PDU::setContextEngineId(BYTE *id, int len)
+void SNMP_PDU::setContextEngineId(BYTE *id, size_t len)
 {
        m_contextEngineIdLen = min(len, SNMP_MAX_ENGINEID_LEN);
        memcpy(m_contextEngineId, id, m_contextEngineIdLen);
index b80e491..29077a1 100644 (file)
@@ -140,7 +140,7 @@ retry:
                                                if ((*response)->getCommand() == SNMP_REPORT)
                                                {
                               SNMP_Variable *var = (*response)->getVariable(0);
-                                                       const TCHAR *oid = var->GetName()->getValueAsText();
+                                                       const TCHAR *oid = var->getName()->getValueAsText();
                                                        rc = SNMP_ERR_AGENT;
                                                        for(int i = 0; m_oidToErrorMap[i].oid != NULL; i++)
                                                        {
@@ -379,7 +379,7 @@ retry_wait:
        struct sockaddr *senderAddr = (pSender != NULL) ? pSender : (struct sockaddr *)&srcAddrBuffer;
        socklen_t *senderAddrLen = (piAddrSize != NULL) ? piAddrSize : &srcAddrLenBuffer;
    int rc = recvfrom(m_hSocket, (char *)&m_pBuffer[m_dwBufferPos + m_dwBytesInBuffer],
-                     m_dwBufferSize - (m_dwBufferPos + m_dwBytesInBuffer), 0,
+                     (int)(m_dwBufferSize - (m_dwBufferPos + m_dwBytesInBuffer)), 0,
                      senderAddr, senderAddrLen);
 
        // Validate sender's address if socket is connected
@@ -404,9 +404,10 @@ retry_wait:
 /**
  * Pre-parse PDU
  */
-UINT32 SNMP_UDPTransport::preParsePDU()
+size_t SNMP_UDPTransport::preParsePDU()
 {
-   UINT32 dwType, dwLength, dwIdLength;
+   UINT32 dwType;
+   size_t dwLength, dwIdLength;
    BYTE *pbCurrPos;
 
    if (!BER_DecodeIdentifier(&m_pBuffer[m_dwBufferPos], m_dwBytesInBuffer, 
@@ -425,22 +426,22 @@ int SNMP_UDPTransport::readMessage(SNMP_PDU **ppData, UINT32 dwTimeout,
                                    struct sockaddr *pSender, socklen_t *piAddrSize,
                                    SNMP_SecurityContext* (*contextFinder)(struct sockaddr *, socklen_t))
 {
-   int iBytes;
-   UINT32 dwPDULength;
+   int bytes;
+   size_t pduLength;
 
    if (m_dwBytesInBuffer < 2)
    {
-      iBytes = recvData(dwTimeout, pSender, piAddrSize);
-      if (iBytes <= 0)
+      bytes = recvData(dwTimeout, pSender, piAddrSize);
+      if (bytes <= 0)
       {
          clearBuffer();
-         return iBytes;
+         return bytes;
       }
-      m_dwBytesInBuffer += iBytes;
+      m_dwBytesInBuffer += bytes;
    }
 
-   dwPDULength = preParsePDU();
-   if (dwPDULength == 0)
+   pduLength = preParsePDU();
+   if (pduLength == 0)
    {
       // Clear buffer
       clearBuffer();
@@ -448,22 +449,22 @@ int SNMP_UDPTransport::readMessage(SNMP_PDU **ppData, UINT32 dwTimeout,
    }
 
    // Move existing data to the beginning of buffer if there are not enough space at the end
-   if (dwPDULength > m_dwBufferSize - m_dwBufferPos)
+   if (pduLength > m_dwBufferSize - m_dwBufferPos)
    {
       memmove(m_pBuffer, &m_pBuffer[m_dwBufferPos], m_dwBytesInBuffer);
       m_dwBufferPos = 0;
    }
 
    // Read entire PDU into buffer
-   while(m_dwBytesInBuffer < dwPDULength)
+   while(m_dwBytesInBuffer < pduLength)
    {
-      iBytes = recvData(dwTimeout, pSender, piAddrSize);
-      if (iBytes <= 0)
+      bytes = recvData(dwTimeout, pSender, piAddrSize);
+      if (bytes <= 0)
       {
          clearBuffer();
-         return iBytes;
+         return bytes;
       }
-      m_dwBytesInBuffer += iBytes;
+      m_dwBytesInBuffer += bytes;
    }
 
        // Change security context if needed
@@ -474,16 +475,16 @@ int SNMP_UDPTransport::readMessage(SNMP_PDU **ppData, UINT32 dwTimeout,
 
    // Create new PDU object and remove parsed data from buffer
    *ppData = new SNMP_PDU;
-   if (!(*ppData)->parse(&m_pBuffer[m_dwBufferPos], dwPDULength, m_securityContext, m_enableEngineIdAutoupdate))
+   if (!(*ppData)->parse(&m_pBuffer[m_dwBufferPos], pduLength, m_securityContext, m_enableEngineIdAutoupdate))
    {
       delete *ppData;
       *ppData = NULL;
    }
-   m_dwBytesInBuffer -= dwPDULength;
+   m_dwBytesInBuffer -= pduLength;
    if (m_dwBytesInBuffer == 0)
       m_dwBufferPos = 0;
 
-   return dwPDULength;
+   return (int)pduLength;
 }
 
 /**
@@ -492,13 +493,12 @@ int SNMP_UDPTransport::readMessage(SNMP_PDU **ppData, UINT32 dwTimeout,
 int SNMP_UDPTransport::sendMessage(SNMP_PDU *pPDU)
 {
    BYTE *pBuffer;
-   UINT32 dwSize;
    int nBytes = 0;
 
-   dwSize = pPDU->encode(&pBuffer, m_securityContext);
-   if (dwSize != 0)
+   size_t size = pPDU->encode(&pBuffer, m_securityContext);
+   if (size != 0)
    {
-      nBytes = sendto(m_hSocket, (char *)pBuffer, dwSize, 0, (struct sockaddr *)&m_peerAddr, sizeof(struct sockaddr_in));
+      nBytes = sendto(m_hSocket, (char *)pBuffer, (int)size, 0, (struct sockaddr *)&m_peerAddr, sizeof(struct sockaddr_in));
       free(pBuffer);
    }
 
index 9069393..0ed3499 100644 (file)
  */
 SNMP_Variable::SNMP_Variable()
 {
-   m_pName = NULL;
-   m_pValue = NULL;
-   m_dwType = ASN_NULL;
-   m_dwValueLength = 0;
+   m_name = NULL;
+   m_value = NULL;
+   m_type = ASN_NULL;
+   m_valueLength = 0;
 }
 
 /**
  * Create variable of ASN_NULL type
  */
-SNMP_Variable::SNMP_Variable(const TCHAR *pszName)
+SNMP_Variable::SNMP_Variable(const TCHAR *name)
 {
-   UINT32 dwLength, *pdwOid;
+   size_t length;
+   UINT32 *pdwOid;
 
-   m_pValue = NULL;
-   m_dwType = ASN_NULL;
-   m_dwValueLength = 0;
+   m_value = NULL;
+   m_type = ASN_NULL;
+   m_valueLength = 0;
 
    pdwOid = (UINT32 *)malloc(sizeof(UINT32) * MAX_OID_LEN);
-   dwLength = SNMPParseOID(pszName, pdwOid, MAX_OID_LEN);
-   m_pName = new SNMP_ObjectId(dwLength, pdwOid);
+   length = SNMPParseOID(name, pdwOid, MAX_OID_LEN);
+   m_name = new SNMP_ObjectId(length, pdwOid);
    free(pdwOid);
 }
 
 /**
  * Create variable of ASN_NULL type
  */
-SNMP_Variable::SNMP_Variable(UINT32 *pdwName, UINT32 dwNameLen)
+SNMP_Variable::SNMP_Variable(UINT32 *name, size_t nameLen)
 {
-   m_pValue = NULL;
-   m_dwType = ASN_NULL;
-   m_dwValueLength = 0;
-   m_pName = new SNMP_ObjectId(dwNameLen, pdwName);
+   m_value = NULL;
+   m_type = ASN_NULL;
+   m_valueLength = 0;
+   m_name = new SNMP_ObjectId(nameLen, name);
+}
+
+/**
+ * Copy constructor
+ */
+SNMP_Variable::SNMP_Variable(SNMP_Variable *src)
+{
+   m_valueLength = src->m_valueLength;
+   m_value = (src->m_value != NULL) ? (BYTE *)nx_memdup(src->m_value, src->m_valueLength) : NULL;
+   m_type = src->m_type;
+   m_name = new SNMP_ObjectId(src->m_name);
 }
 
 /**
@@ -67,57 +79,58 @@ SNMP_Variable::SNMP_Variable(UINT32 *pdwName, UINT32 dwNameLen)
  */
 SNMP_Variable::~SNMP_Variable()
 {
-   delete m_pName;
-   safe_free(m_pValue);
+   delete m_name;
+   safe_free(m_value);
 }
 
 /**
  * Parse variable record in PDU
  */
-BOOL SNMP_Variable::Parse(BYTE *pData, UINT32 dwVarLength)
+bool SNMP_Variable::parse(BYTE *data, size_t varLength)
 {
    BYTE *pbCurrPos;
-   UINT32 dwType, dwLength, dwIdLength;
+   UINT32 type;
+   size_t length, dwIdLength;
    SNMP_OID *oid;
-   BOOL bResult = FALSE;
+   bool bResult = false;
 
    // Object ID
-   if (!BER_DecodeIdentifier(pData, dwVarLength, &dwType, &dwLength, &pbCurrPos, &dwIdLength))
-      return FALSE;
-   if (dwType != ASN_OBJECT_ID)
-      return FALSE;
+   if (!BER_DecodeIdentifier(data, varLength, &type, &length, &pbCurrPos, &dwIdLength))
+      return false;
+   if (type != ASN_OBJECT_ID)
+      return false;
 
    oid = (SNMP_OID *)malloc(sizeof(SNMP_OID));
    memset(oid, 0, sizeof(SNMP_OID));
-   if (BER_DecodeContent(dwType, pbCurrPos, dwLength, (BYTE *)oid))
+   if (BER_DecodeContent(type, pbCurrPos, length, (BYTE *)oid))
    {
-      m_pName = new SNMP_ObjectId(oid->dwLength, oid->pdwValue);
-      dwVarLength -= dwLength + dwIdLength;
-      pbCurrPos += dwLength;
+      m_name = new SNMP_ObjectId(oid->length, oid->value);
+      varLength -= length + dwIdLength;
+      pbCurrPos += length;
       bResult = TRUE;
    }
-   safe_free(oid->pdwValue);
+   safe_free(oid->value);
    free(oid);
 
    if (bResult)
    {
       bResult = FALSE;
-      if (BER_DecodeIdentifier(pbCurrPos, dwVarLength, &m_dwType, &dwLength, &pbCurrPos, &dwIdLength))
+      if (BER_DecodeIdentifier(pbCurrPos, varLength, &m_type, &length, &pbCurrPos, &dwIdLength))
       {
-         switch(m_dwType)
+         switch(m_type)
          {
             case ASN_OBJECT_ID:
                oid = (SNMP_OID *)malloc(sizeof(SNMP_OID));
                memset(oid, 0, sizeof(SNMP_OID));
-               if (BER_DecodeContent(m_dwType, pbCurrPos, dwLength, (BYTE *)oid))
+               if (BER_DecodeContent(m_type, pbCurrPos, length, (BYTE *)oid))
                {
-                  m_dwValueLength = oid->dwLength * sizeof(UINT32);
-                  m_pValue = (BYTE *)oid->pdwValue;
-                  bResult = TRUE;
+                  m_valueLength = oid->length * sizeof(UINT32);
+                  m_value = (BYTE *)oid->value;
+                  bResult = true;
                }
                else
                {
-                  safe_free(oid->pdwValue);
+                  safe_free(oid->value);
                }
                free(oid);
                break;
@@ -126,18 +139,18 @@ BOOL SNMP_Variable::Parse(BYTE *pData, UINT32 dwVarLength)
             case ASN_GAUGE32:
             case ASN_TIMETICKS:
             case ASN_UINTEGER32:
-               m_dwValueLength = sizeof(UINT32);
-               m_pValue = (BYTE *)malloc(8);
-               bResult = BER_DecodeContent(m_dwType, pbCurrPos, dwLength, m_pValue);
+               m_valueLength = sizeof(UINT32);
+               m_value = (BYTE *)malloc(8);
+               bResult = BER_DecodeContent(m_type, pbCurrPos, length, m_value);
                break;
                      case ASN_COUNTER64:
-               m_dwValueLength = sizeof(QWORD);
-               m_pValue = (BYTE *)malloc(16);
-               bResult = BER_DecodeContent(m_dwType, pbCurrPos, dwLength, m_pValue);
+               m_valueLength = sizeof(QWORD);
+               m_value = (BYTE *)malloc(16);
+               bResult = BER_DecodeContent(m_type, pbCurrPos, length, m_value);
                break;
             default:
-               m_dwValueLength = dwLength;
-               m_pValue = (BYTE *)nx_memdup(pbCurrPos, dwLength);
+               m_valueLength = length;
+               m_value = (BYTE *)nx_memdup(pbCurrPos, length);
                bResult = TRUE;
                break;
          }
@@ -153,19 +166,19 @@ BOOL SNMP_Variable::Parse(BYTE *pData, UINT32 dwVarLength)
  */
 size_t SNMP_Variable::getRawValue(BYTE *buffer, size_t bufSize)
 {
-       size_t len = min(bufSize, (size_t)m_dwValueLength);
-   memcpy(buffer, m_pValue, len);
+       size_t len = min(bufSize, (size_t)m_valueLength);
+   memcpy(buffer, m_value, len);
        return len;
 }
 
 /**
  * Get value as unsigned integer
  */
-UINT32 SNMP_Variable::GetValueAsUInt()
+UINT32 SNMP_Variable::getValueAsUInt()
 {
    UINT32 dwValue;
 
-   switch(m_dwType)
+   switch(m_type)
    {
       case ASN_INTEGER:
       case ASN_COUNTER32:
@@ -173,10 +186,10 @@ UINT32 SNMP_Variable::GetValueAsUInt()
       case ASN_TIMETICKS:
       case ASN_UINTEGER32:
       case ASN_IP_ADDR:
-         dwValue = *((UINT32 *)m_pValue);
+         dwValue = *((UINT32 *)m_value);
          break;
       case ASN_COUNTER64:
-         dwValue = (UINT32)(*((QWORD *)m_pValue));
+         dwValue = (UINT32)(*((QWORD *)m_value));
          break;
       default:
          dwValue = 0;
@@ -189,11 +202,11 @@ UINT32 SNMP_Variable::GetValueAsUInt()
 /**
  * Get value as signed integer
  */
-LONG SNMP_Variable::GetValueAsInt()
+LONG SNMP_Variable::getValueAsInt()
 {
    LONG iValue;
 
-   switch(m_dwType)
+   switch(m_type)
    {
       case ASN_INTEGER:
       case ASN_COUNTER32:
@@ -201,10 +214,10 @@ LONG SNMP_Variable::GetValueAsInt()
       case ASN_TIMETICKS:
       case ASN_UINTEGER32:
       case ASN_IP_ADDR:
-         iValue = *((LONG *)m_pValue);
+         iValue = *((LONG *)m_value);
          break;
       case ASN_COUNTER64:
-         iValue = (LONG)(*((QWORD *)m_pValue));
+         iValue = (LONG)(*((QWORD *)m_value));
          break;
       default:
          iValue = 0;
@@ -218,99 +231,98 @@ LONG SNMP_Variable::GetValueAsInt()
  * Get value as string
  * Note: buffer size is in characters
  */
-TCHAR *SNMP_Variable::getValueAsString(TCHAR *pszBuffer, UINT32 dwBufferSize)
+TCHAR *SNMP_Variable::getValueAsString(TCHAR *buffer, size_t bufferSize)
 {
-   UINT32 dwLen;
+   size_t length;
 
-   if ((pszBuffer == NULL) || (dwBufferSize == 0))
+   if ((buffer == NULL) || (bufferSize == 0))
       return NULL;
 
-   switch(m_dwType)
+   switch(m_type)
    {
       case ASN_INTEGER:
-         _sntprintf(pszBuffer, dwBufferSize, _T("%d"), *((LONG *)m_pValue));
+         _sntprintf(buffer, bufferSize, _T("%d"), *((LONG *)m_value));
          break;
       case ASN_COUNTER32:
       case ASN_GAUGE32:
       case ASN_TIMETICKS:
       case ASN_UINTEGER32:
-         _sntprintf(pszBuffer, dwBufferSize, _T("%u"), *((UINT32 *)m_pValue));
+         _sntprintf(buffer, bufferSize, _T("%u"), *((UINT32 *)m_value));
          break;
       case ASN_COUNTER64:
-         _sntprintf(pszBuffer, dwBufferSize, UINT64_FMT, *((QWORD *)m_pValue));
+         _sntprintf(buffer, bufferSize, UINT64_FMT, *((QWORD *)m_value));
          break;
       case ASN_IP_ADDR:
-         if (dwBufferSize >= 16)
-            IpToStr(ntohl(*((UINT32 *)m_pValue)), pszBuffer);
+         if (bufferSize >= 16)
+            IpToStr(ntohl(*((UINT32 *)m_value)), buffer);
          else
-            pszBuffer[0] = 0;
+            buffer[0] = 0;
          break;
       case ASN_OBJECT_ID:
-         SNMPConvertOIDToText(m_dwValueLength / sizeof(UINT32), (UINT32 *)m_pValue,
-                              pszBuffer, dwBufferSize);
+         SNMPConvertOIDToText(m_valueLength / sizeof(UINT32), (UINT32 *)m_value, buffer, bufferSize);
          break;
       case ASN_OCTET_STRING:
-         dwLen = min(dwBufferSize - 1, m_dwValueLength);
-         if (dwLen > 0)
+         length = min(bufferSize - 1, m_valueLength);
+         if (length > 0)
          {
 #ifdef UNICODE
-            if (MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, (char *)m_pValue, dwLen, pszBuffer, dwBufferSize) == 0)
+            if (MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, (char *)m_value, (int)length, buffer, (int)bufferSize) == 0)
             {
                // fallback if conversion fails
-                        for(UINT32 i = 0; i < dwLen; i++)
-                                pszBuffer[i] = ((char *)m_pValue)[i];
+                        for(UINT32 i = 0; i < length; i++)
+                                buffer[i] = ((char *)m_value)[i];
             }
 #else
-            memcpy(pszBuffer, m_pValue, dwLen);
+            memcpy(buffer, m_value, length);
 #endif
          }
-         pszBuffer[dwLen] = 0;
+         buffer[length] = 0;
          break;
       default:
-         pszBuffer[0] = 0;
+         buffer[0] = 0;
          break;
    }
-   return pszBuffer;
+   return buffer;
 }
 
 /**
  * Get value as printable string, doing bin to hex conversion if necessary
  * Note: buffer size is in characters
  */
-TCHAR *SNMP_Variable::getValueAsPrintableString(TCHAR *buffer, UINT32 bufferSize, bool *convertToHex)
+TCHAR *SNMP_Variable::getValueAsPrintableString(TCHAR *buffer, size_t bufferSize, bool *convertToHex)
 {
-   UINT32 dwLen;
+   size_t length;
        bool convertToHexAllowed = *convertToHex;
        *convertToHex = false;
 
    if ((buffer == NULL) || (bufferSize == 0))
       return NULL;
 
-   if (m_dwType == ASN_OCTET_STRING)
+   if (m_type == ASN_OCTET_STRING)
        {
-      dwLen = min(bufferSize - 1, m_dwValueLength);
-      if (dwLen > 0)
+      length = min(bufferSize - 1, m_valueLength);
+      if (length > 0)
       {
 #ifdef UNICODE
-         if (MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, (char *)m_pValue, dwLen, buffer, bufferSize) == 0)
+         if (MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, (char *)m_value, (int)length, buffer, (int)bufferSize) == 0)
          {
             // fallback if conversion fails
-                     for(UINT32 i = 0; i < dwLen; i++)
-                             buffer[i] = ((char *)m_pValue)[i];
+                     for(UINT32 i = 0; i < length; i++)
+                             buffer[i] = ((char *)m_value)[i];
          }
 #else
-         memcpy(buffer, m_pValue, dwLen);
+         memcpy(buffer, m_value, length);
 #endif
       }
-      buffer[dwLen] = 0;
+      buffer[length] = 0;
 
                if (convertToHexAllowed)
                {
                        bool conversionNeeded = false;
-                       for(UINT32 i = 0; i < dwLen; i++)
-                               if ((m_pValue[i] < 0x1F) && (m_pValue[i] != 0x0D) && (m_pValue[i] != 0x0A))
+                       for(UINT32 i = 0; i < length; i++)
+                               if ((m_value[i] < 0x1F) && (m_value[i] != 0x0D) && (m_value[i] != 0x0A))
                                {
-               if ((i == dwLen - 1) && (m_pValue[i] == 0))
+               if ((i == length - 1) && (m_value[i] == 0))
                   break;   // 0 at the end is OK
                                        conversionNeeded = true;
                                        break;
@@ -318,12 +330,12 @@ TCHAR *SNMP_Variable::getValueAsPrintableString(TCHAR *buffer, UINT32 bufferSize
 
                        if (conversionNeeded)
                        {
-                               TCHAR *hexString = (TCHAR *)malloc((dwLen * 3 + 1) * sizeof(TCHAR));
+                               TCHAR *hexString = (TCHAR *)malloc((length * 3 + 1) * sizeof(TCHAR));
                                UINT32 i, j;
-                               for(i = 0, j = 0; i < dwLen; i++)
+                               for(i = 0, j = 0; i < length; i++)
                                {
-                                       hexString[j++] = bin2hex(m_pValue[i] >> 4);
-                                       hexString[j++] = bin2hex(m_pValue[i] & 15);
+                                       hexString[j++] = bin2hex(m_value[i] >> 4);
+                                       hexString[j++] = bin2hex(m_value[i] & 15);
                                        hexString[j++] = _T(' ');
                                }
                                hexString[j] = 0;
@@ -335,7 +347,7 @@ TCHAR *SNMP_Variable::getValueAsPrintableString(TCHAR *buffer, UINT32 bufferSize
                else
                {
                        // Replace non-printable characters with question marks
-                       for(UINT32 i = 0; i < dwLen; i++)
+                       for(UINT32 i = 0; i < length; i++)
                                if ((buffer[i] < 0x1F) && (buffer[i] != 0x0D) && (buffer[i] != 0x0A))
                                        buffer[i] = _T('?');
                }
@@ -351,13 +363,13 @@ TCHAR *SNMP_Variable::getValueAsPrintableString(TCHAR *buffer, UINT32 bufferSize
 /**
  * Get value as object id
  */
-SNMP_ObjectId *SNMP_Variable::GetValueAsObjectId()
+SNMP_ObjectId *SNMP_Variable::getValueAsObjectId()
 {
    SNMP_ObjectId *oid = NULL;
 
-   if (m_dwType == ASN_OBJECT_ID)
+   if (m_type == ASN_OBJECT_ID)
    {
-      oid = new SNMP_ObjectId(m_dwValueLength / sizeof(UINT32), (UINT32 *)m_pValue);
+      oid = new SNMP_ObjectId(m_valueLength / sizeof(UINT32), (UINT32 *)m_value);
    }
    return oid;
 }
@@ -365,130 +377,125 @@ SNMP_ObjectId *SNMP_Variable::GetValueAsObjectId()
 /**
  * Get value as MAC address
  */
-TCHAR *SNMP_Variable::GetValueAsMACAddr(TCHAR *pszBuffer)
+TCHAR *SNMP_Variable::getValueAsMACAddr(TCHAR *buffer)
 {
    int i;
    TCHAR *pszPos;
 
    // MAC address usually encoded as octet string
-   if ((m_dwType == ASN_OCTET_STRING) && (m_dwValueLength >= 6))
+   if ((m_type == ASN_OCTET_STRING) && (m_valueLength >= 6))
    {
-      for(i = 0, pszPos = pszBuffer; i < 6; i++, pszPos += 3)
-         _sntprintf(pszPos, 4, _T("%02X:"), m_pValue[i]);
+      for(i = 0, pszPos = buffer; i < 6; i++, pszPos += 3)
+         _sntprintf(pszPos, 4, _T("%02X:"), m_value[i]);
       *(pszPos - 1) = 0;
    }
    else
    {
-      _tcscpy(pszBuffer, _T("00:00:00:00:00:00"));
+      _tcscpy(buffer, _T("00:00:00:00:00:00"));
    }
-   return pszBuffer;
+   return buffer;
 }
 
-
-//
-// Get value as IP address
-//
-
-TCHAR *SNMP_Variable::GetValueAsIPAddr(TCHAR *pszBuffer)
+/**
+ * Get value as IP address
+ */
+TCHAR *SNMP_Variable::getValueAsIPAddr(TCHAR *buffer)
 {
    // Ignore type and check only length
-   if (m_dwValueLength >= 4)
+   if (m_valueLength >= 4)
    {
-      IpToStr(ntohl(*((UINT32 *)m_pValue)), pszBuffer);
+      IpToStr(ntohl(*((UINT32 *)m_value)), buffer);
    }
    else
    {
-      _tcscpy(pszBuffer, _T("0.0.0.0"));
+      _tcscpy(buffer, _T("0.0.0.0"));
    }
-   return pszBuffer;
+   return buffer;
 }
 
-
-//
-// Encode variable using BER
-// Normally buffer provided should be at least m_dwValueLength + (name_length * 4) + 12 bytes
-// Return value is number of bytes actually used in buffer
-//
-
-UINT32 SNMP_Variable::Encode(BYTE *pBuffer, UINT32 dwBufferSize)
+/**
+ * Encode variable using BER
+ * Normally buffer provided should be at least m_valueLength + (name_length * 4) + 12 bytes
+ * Return value is number of bytes actually used in buffer
+ */
+size_t SNMP_Variable::encode(BYTE *pBuffer, size_t bufferSize)
 {
-   UINT32 dwBytes, dwWorkBufSize;
+   size_t bytes, dwWorkBufSize;
    BYTE *pWorkBuf;
 
-   dwWorkBufSize = m_dwValueLength + m_pName->getLength() * 4 + 16;
+   dwWorkBufSize = (UINT32)(m_valueLength + m_name->getLength() * 4 + 16);
    pWorkBuf = (BYTE *)malloc(dwWorkBufSize);
-   dwBytes = BER_Encode(ASN_OBJECT_ID, (BYTE *)m_pName->getValue(), 
-                        m_pName->getLength() * sizeof(UINT32), 
+   bytes = BER_Encode(ASN_OBJECT_ID, (BYTE *)m_name->getValue(), 
+                        m_name->getLength() * sizeof(UINT32), 
                         pWorkBuf, dwWorkBufSize);
-   dwBytes += BER_Encode(m_dwType, m_pValue, m_dwValueLength, 
-                         pWorkBuf + dwBytes, dwWorkBufSize - dwBytes);
-   dwBytes = BER_Encode(ASN_SEQUENCE, pWorkBuf, dwBytes, pBuffer, dwBufferSize);
+   bytes += BER_Encode(m_type, m_value, m_valueLength, 
+                         pWorkBuf + bytes, dwWorkBufSize - bytes);
+   bytes = BER_Encode(ASN_SEQUENCE, pWorkBuf, bytes, pBuffer, bufferSize);
    free(pWorkBuf);
-   return dwBytes;
+   return bytes;
 }
 
-
-//
-// Set variable from string
-//
-
-void SNMP_Variable::SetValueFromString(UINT32 dwType, const TCHAR *pszValue)
+/**
+ * Set variable from string
+ */
+void SNMP_Variable::setValueFromString(UINT32 type, const TCHAR *value)
 {
-   UINT32 *pdwBuffer, dwLen;
+   UINT32 *pdwBuffer;
+   size_t length;
 
-   m_dwType = dwType;
-   switch(m_dwType)
+   m_type = type;
+   switch(m_type)
    {
       case ASN_INTEGER:
-         m_dwValueLength = sizeof(LONG);
-         m_pValue = (BYTE *)realloc(m_pValue, m_dwValueLength);
-         *((LONG *)m_pValue) = _tcstol(pszValue, NULL, 0);
+         m_valueLength = sizeof(LONG);
+         m_value = (BYTE *)realloc(m_value, m_valueLength);
+         *((LONG *)m_value) = _tcstol(value, NULL, 0);
          break;
       case ASN_COUNTER32:
       case ASN_GAUGE32:
       case ASN_TIMETICKS:
       case ASN_UINTEGER32:
-         m_dwValueLength = sizeof(UINT32);
-         m_pValue = (BYTE *)realloc(m_pValue, m_dwValueLength);
-         *((UINT32 *)m_pValue) = _tcstoul(pszValue, NULL, 0);
+         m_valueLength = sizeof(UINT32);
+         m_value = (BYTE *)realloc(m_value, m_valueLength);
+         *((UINT32 *)m_value) = _tcstoul(value, NULL, 0);
          break;
       case ASN_COUNTER64:
-         m_dwValueLength = sizeof(QWORD);
-         m_pValue = (BYTE *)realloc(m_pValue, m_dwValueLength);
-         *((QWORD *)m_pValue) = _tcstoull(pszValue, NULL, 0);
+         m_valueLength = sizeof(QWORD);
+         m_value = (BYTE *)realloc(m_value, m_valueLength);
+         *((QWORD *)m_value) = _tcstoull(value, NULL, 0);
          break;
       case ASN_IP_ADDR:
-         m_dwValueLength = sizeof(UINT32);
-         m_pValue = (BYTE *)realloc(m_pValue, m_dwValueLength);
-         *((UINT32 *)m_pValue) = _t_inet_addr(pszValue);
+         m_valueLength = sizeof(UINT32);
+         m_value = (BYTE *)realloc(m_value, m_valueLength);
+         *((UINT32 *)m_value) = _t_inet_addr(value);
          break;
       case ASN_OBJECT_ID:
          pdwBuffer = (UINT32 *)malloc(sizeof(UINT32) * 256);
-         dwLen = SNMPParseOID(pszValue, pdwBuffer, 256);
-         if (dwLen > 0)
+         length = SNMPParseOID(value, pdwBuffer, 256);
+         if (length > 0)
          {
-            m_dwValueLength = dwLen * sizeof(UINT32);
-            safe_free(m_pValue);
-            m_pValue = (BYTE *)nx_memdup(pdwBuffer, m_dwValueLength);
+            m_valueLength = length * sizeof(UINT32);
+            safe_free(m_value);
+            m_value = (BYTE *)nx_memdup(pdwBuffer, m_valueLength);
          }
          else
          {
             // OID parse error, set to .ccitt.zeroDotZero (.0.0)
-            m_dwValueLength = sizeof(UINT32) * 2;
-            m_pValue = (BYTE *)realloc(m_pValue, m_dwValueLength);
-            memset(m_pValue, 0, m_dwValueLength);
+            m_valueLength = sizeof(UINT32) * 2;
+            m_value = (BYTE *)realloc(m_value, m_valueLength);
+            memset(m_value, 0, m_valueLength);
          }
          break;
       case ASN_OCTET_STRING:
-         m_dwValueLength = (UINT32)_tcslen(pszValue);
+         m_valueLength = (UINT32)_tcslen(value);
 #ifdef UNICODE
-         m_pValue = (BYTE *)realloc(m_pValue, m_dwValueLength);
+         m_value = (BYTE *)realloc(m_value, m_valueLength);
          WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK | WC_DEFAULTCHAR,
-                             pszValue, m_dwValueLength, (char *)m_pValue,
-                             m_dwValueLength, NULL, NULL);
+                             value, (int)m_valueLength, (char *)m_value,
+                             (int)m_valueLength, NULL, NULL);
 #else
-         safe_free(m_pValue);
-         m_pValue = (BYTE *)nx_memdup(pszValue, m_dwValueLength);
+         safe_free(m_value);
+         m_value = (BYTE *)nx_memdup(value, m_valueLength);
 #endif
          break;
       default:
index 7aa4be8..5ec879f 100644 (file)
@@ -103,13 +103,13 @@ int GetData(int argc, TCHAR *argv[])
             for(i = 0; i < (int)response->getNumVariables(); i++)
             {
                var = response->getVariable(i);
-               if (var->GetType() == ASN_NO_SUCH_OBJECT)
+               if (var->getType() == ASN_NO_SUCH_OBJECT)
                {
-                  _tprintf(_T("No such object: %s\n"), var->GetName()->getValueAsText());
+                  _tprintf(_T("No such object: %s\n"), var->getName()->getValueAsText());
                }
-               else if (var->GetType() == ASN_NO_SUCH_INSTANCE)
+               else if (var->getType() == ASN_NO_SUCH_INSTANCE)
                {
-                  _tprintf(_T("No such instance: %s\n"), var->GetName()->getValueAsText());
+                  _tprintf(_T("No such instance: %s\n"), var->getName()->getValueAsText());
                }
                else
                {
@@ -117,8 +117,8 @@ int GetData(int argc, TCHAR *argv[])
                                                TCHAR typeName[256];
 
                                                var->getValueAsPrintableString(szBuffer, 1024, &convert);
-                                               _tprintf(_T("%s [%s]: %s\n"), var->GetName()->getValueAsText(),
-                                                        convert ? _T("Hex-STRING") : SNMPDataTypeName(var->GetType(), typeName, 256),
+                                               _tprintf(_T("%s [%s]: %s\n"), var->getName()->getValueAsText(),
+                                                        convert ? _T("Hex-STRING") : SNMPDataTypeName(var->getType(), typeName, 256),
                            szBuffer);
                }
             }
index 8b2491a..1e118cb 100644 (file)
@@ -82,7 +82,7 @@ static int SetVariables(int argc, TCHAR *argv[])
          if (SNMPIsCorrectOID(argv[i]))
          {
             pVar = new SNMP_Variable(argv[i]);
-            pVar->SetValueFromString(m_type, argv[i + 1]);
+            pVar->setValueFromString(m_type, argv[i + 1]);
             request->bindVariable(pVar);
          }
          else
index d283061..43ebac6 100644 (file)
@@ -46,7 +46,8 @@ int GetData(TCHAR *pszHost, TCHAR *pszRootOid)
 {
    SNMP_UDPTransport *pTransport;
    SNMP_PDU *pRqPDU, *pRespPDU;
-   UINT32 dwResult, dwRootLen, dwNameLen;
+   UINT32 dwResult;
+   size_t dwRootLen, dwNameLen;
    UINT32 pdwRootName[MAX_OID_LEN], pdwName[MAX_OID_LEN];
    TCHAR szBuffer[1024], typeName[256];
    int iExit = 0;
@@ -107,29 +108,29 @@ int GetData(TCHAR *pszHost, TCHAR *pszRootOid)
                {
                   SNMP_Variable *pVar = pRespPDU->getVariable(0);
 
-                  if ((pVar->GetType() != ASN_NO_SUCH_OBJECT) &&
-                      (pVar->GetType() != ASN_NO_SUCH_INSTANCE))
+                  if ((pVar->getType() != ASN_NO_SUCH_OBJECT) &&
+                      (pVar->getType() != ASN_NO_SUCH_INSTANCE))
                   {
                      // Should we stop walking?
-                     if ((pVar->GetName()->getLength() < dwRootLen) ||
-                         (memcmp(pdwRootName, pVar->GetName()->getValue(), dwRootLen * sizeof(UINT32))) ||
-                         ((pVar->GetName()->getLength() == dwNameLen) &&
-                          (!memcmp(pVar->GetName()->getValue(), pdwName, pVar->GetName()->getLength() * sizeof(UINT32)))))
+                     if ((pVar->getName()->getLength() < dwRootLen) ||
+                         (memcmp(pdwRootName, pVar->getName()->getValue(), dwRootLen * sizeof(UINT32))) ||
+                         ((pVar->getName()->getLength() == dwNameLen) &&
+                          (!memcmp(pVar->getName()->getValue(), pdwName, pVar->getName()->getLength() * sizeof(UINT32)))))
                      {
                         bRunning = FALSE;
                         delete pRespPDU;
                         delete pRqPDU;
                         break;
                      }
-                     memcpy(pdwName, pVar->GetName()->getValue(), 
-                            pVar->GetName()->getLength() * sizeof(UINT32));
-                     dwNameLen = pVar->GetName()->getLength();
+                     memcpy(pdwName, pVar->getName()->getValue(), 
+                            pVar->getName()->getLength() * sizeof(UINT32));
+                     dwNameLen = pVar->getName()->getLength();
 
                      // Print OID and value
                                                        bool convert = true;
                                                        pVar->getValueAsPrintableString(szBuffer, 1024, &convert);
-                                                       _tprintf(_T("%s [%s]: %s\n"), pVar->GetName()->getValueAsText(),
-                                                                               convert ? _T("Hex-STRING") : SNMPDataTypeName(pVar->GetType(), typeName, 256),
+                                                       _tprintf(_T("%s [%s]: %s\n"), pVar->getName()->getValueAsText(),
+                                                                               convert ? _T("Hex-STRING") : SNMPDataTypeName(pVar->getType(), typeName, 256),
                                                                                szBuffer);
                   }
                   else
index aa04752..f17d8c3 100644 (file)
@@ -23,7 +23,7 @@ public class Configuration implements ApplicationConfiguration
       @Override
       public EntryPoint create()
       {
-         return new MobileClientEntryPoint();
+         return new MobileApplication();
       }
    }
    
index b0da80f..36a8156 100644 (file)
@@ -5,20 +5,32 @@ package org.netxms.webui.mobile.widgets;
 
 import java.util.HashMap;
 import java.util.Map;
+import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.resource.JFaceResources;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseListener;
 import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.RGB;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
+import org.netxms.ui.eclipse.tools.ColorCache;
+import org.netxms.webui.mobile.Activator;
 
 /**
  * Navigation bar
  */
 public class NavigationBar extends Composite
 {
+   private static final RGB COLOR_BACKGROUND = new RGB(0, 0, 0);
+   private static final RGB COLOR_FOREGROUND = new RGB(255, 255, 255);
+   
    private Map<String, ActionElement> elements = new HashMap<String, ActionElement>();
+   private ColorCache colors;
    
    /**
     * @param parent
@@ -26,15 +38,28 @@ public class NavigationBar extends Composite
    public NavigationBar(Composite parent)
    {
       super(parent, SWT.NONE);
-      setBackground(new Color(parent.getDisplay(), 0, 0, 0));
-      setForeground(new Color(parent.getDisplay(), 255, 255, 255));
+      
+      colors = new ColorCache(this);
+      
+      setBackground(colors.create(COLOR_BACKGROUND));
+      setForeground(colors.create(COLOR_FOREGROUND));
       
       GridLayout layout = new GridLayout();
       setLayout(layout);
       
-      //addAction(action);
+      addAction(new Action("☰") {
+         @Override
+         public void run()
+         {
+         }
+      });
    }
    
+   /**
+    * Add action to navigation bar
+    * 
+    * @param action
+    */
    public void addAction(IAction action)
    {
       ActionElement e = elements.get(action.getId());
@@ -49,6 +74,9 @@ public class NavigationBar extends Composite
       layout(true, true);
    }
    
+   /**
+    * Action element
+    */
    private class ActionElement extends CLabel
    {
       private IAction action;
@@ -57,7 +85,27 @@ public class NavigationBar extends Composite
       ActionElement(Composite parent, IAction action)
       {
          super(parent, SWT.NONE);
+         setBackground(colors.create(COLOR_BACKGROUND));
+         setForeground(colors.create(COLOR_FOREGROUND));
+         setCursor(getDisplay().getSystemCursor(SWT.CURSOR_HAND));
          update(action);
+         addMouseListener(new MouseListener() {
+            @Override
+            public void mouseUp(MouseEvent e)
+            {
+               ActionElement.this.action.run();
+            }
+            
+            @Override
+            public void mouseDown(MouseEvent e)
+            {
+            }
+            
+            @Override
+            public void mouseDoubleClick(MouseEvent e)
+            {
+            }
+         });
       }
       
       void update(IAction action)