Hello, When I tried to compile net-snmp 5.4.2.1 with Visual Studio 2005 this resulted in several compiler warnings and one compiler error. Can someone please review the patch below and either apply or reject it ?
Thanks,
Bart.
--------------------------------------------------------------------------------------------------------------------------------------------------------------
The patch below fixes the following issues:
- Compilation now succeeds -- <cstdio> should only be included in C++
source files, C source files should include <stdio.h>.
- The correct data type for an array of HANDLE's is HANDLE[] and not HANDLE*[].
- Fixed a warning on conversion between function types for the
function subagentTrapCheck by adding two ignored arguments to this
function.
- Removed several unused stack variables.
- Replaced "return (-1);" by "return;" inside functions with return type "void".
- Inserted a cast in front of the pointers passed to a function that
expects a pointer of a different type.
- Replaced "NULL" by "0" where the compiler expects an integer.
- Removed the statement "ResetEvent(dwWaitResult)" because passing an
integer to ResetEvent() does not make sense. I did not replace this
statement by a call to ResetEvent(subagentTrapEvents[dwWaitResult])
since this would introduce a race condition.
Index: winExtDLL.c
===================================================================
--- winExtDLL.c (revision 7916)
+++ winExtDLL.c (revision 7921)
@@ -23,7 +23,7 @@
*/
#include <windows.h>
-#include <cstdio>
+#include <stdio.h>
#include <Snmp-winExtDLL.h> // Modified Windows SDK
snmp.h. See Notes above
#include <mgmtapi.h>
#include <string.h>
@@ -107,7 +107,7 @@
char *extDLLs[MAX_WINEXT_DLLS];
int extDLLs_index = 0;
-HANDLE *subagentTrapEvents[MAX_WINEXT_TRAP_EVENTS];
+HANDLE subagentTrapEvents[MAX_WINEXT_TRAP_EVENTS];
int subagentTrapEvents_index = 0;
void winExtDLL_free_config_winExtDLL(void);
@@ -115,7 +115,7 @@
void read_ExtensionAgents_list();
void read_ExtensionAgents_list2(const TCHAR *);
-void subagentTrapCheck();
+void subagentTrapCheck(unsigned int clientreg, void *clientarg);
void send_trap(
AsnObjectIdentifier *,
@@ -131,8 +131,6 @@
HANDLE subagentTrapEvent;
AsnObjectIdentifier pSupportedView;
BOOL result;
- HANDLE hThread;
- DWORD IDThread;
char dll_name[SZBUF_DLLNAME_MAX];
DWORD (WINAPI *xSnmpExtensionInit)(DWORD, HANDLE*, AsnObjectIdentifier*);
@@ -150,8 +148,6 @@
int iter, indx;
- netsnmp_handler_registration *my_handler;
-
HANDLE hInst = NULL;
DEBUGMSGTL(("winExtDLL", "init_winExtDLL called\n"));
@@ -264,7 +260,7 @@
snmp_log(LOG_ERR,
"malloc failed registering handler for winExtDLL");
DEBUGMSGTL(("winExtDLL", "malloc failed registering handler for
winExtDLL"));
- return (-1);
+ return;
}
else {
DEBUGMSGTL(("winExtDLL", "handler registered\n"));
@@ -330,7 +326,7 @@
snmp_log(LOG_ERR,
"malloc failed registering handler for winExtDLL");
DEBUGMSGTL(("winExtDLL", "malloc failed registering handler
for winExtDLL"));
- return (-1);
+ return;
}
else {
DEBUGMSGTL(("winExtDLL", "handler registered\n"));
@@ -410,8 +406,6 @@
u_char netsnmp_ASN_type;
u_char windows_ASN_type;
- char *stringtemp;
-
// WinSNMP variables:
BOOL result;
SnmpVarBind *mySnmpVarBind;
@@ -565,7 +560,7 @@
pVarBindList.list->name.idLength = i;
DEBUGMSGTL(("winExtDLL", "Windows OID: "));
- DEBUGMSGWINOID(("winExtDLL", pVarBindList.list));
+ DEBUGMSGWINOID(("winExtDLL",
(AsnObjectIdentifier*)pVarBindList.list));
DEBUGMSG(("winExtDLL", "\n"));
}
@@ -606,7 +601,7 @@
}
DEBUGMSGTL(("winExtDLL", "Windows OID returned from
xSnmpExtensionQuery(Ex): "));
- DEBUGMSGWINOID(("winExtDLL", pVarBindList.list));
+ DEBUGMSGWINOID(("winExtDLL",
(AsnObjectIdentifier*)pVarBindList.list));
DEBUGMSG(("winExtDLL", "\n"));
// Convert OID from Windows to Net-SNMP so Net-SNMP has the
new 'next' OID
@@ -767,7 +762,7 @@
// Return results
snmp_set_var_typed_value(var, netsnmp_ASN_type,
- &ret_long,
+ (u_char*)&ret_long,
sizeof(ret_long));
//return SNMP_ERR_NOERROR;
break;
@@ -791,7 +786,7 @@
DEBUGMSG(("winExtDLL", "\n"));
snmp_set_var_typed_value(var, netsnmp_ASN_type,
- ret_oid,
+ (u_char*)ret_oid,
ret_oid_length * sizeof(oid));
//return SNMP_ERR_NOERROR;
@@ -800,9 +795,9 @@
default:
// The Windows agent didn't return data so set values to NULL
// FIXME: We never get here. We set it to INTEGER above..
- snmp_set_var_typed_value(var, NULL,
+ snmp_set_var_typed_value(var, 0,
NULL,
- NULL);
+ 0);
break;
}
if (&pVarBindList)
@@ -922,7 +917,7 @@
// Print OID
DEBUGMSGTL(("winExtDLL","Windows OID length:
%d\n",pVarBindList.list->name.idLength));
DEBUGMSGTL(("winExtDLL","Windows OID: "));
- DEBUGMSGWINOID(("winExtDLL", pVarBindList.list));
+ DEBUGMSGWINOID(("winExtDLL",
(AsnObjectIdentifier*)pVarBindList.list));
DEBUGMSG(("winExtDLL", "\n"));
}
else {
@@ -994,7 +989,7 @@
// Print OID
DEBUGMSGTL(("winExtDLL","Windows OID length:
%d\n",mySnmpVarBind->name.idLength));
DEBUGMSGTL(("winExtDLL","Windows OID: "));
- DEBUGMSGWINOID(("winExtDLL", mySnmpVarBind));
+ DEBUGMSGWINOID(("winExtDLL",
(AsnObjectIdentifier*)mySnmpVarBind));
DEBUGMSG(("winExtDLL", "\n"));
}
else {
@@ -1137,7 +1132,6 @@
DWORD valueSize = MAX_VALUE_NAME;
TCHAR valueName[MAX_VALUE_NAME];
TCHAR valueNameExpanded[MAX_VALUE_NAME];
- int i;
DWORD retCode;
DEBUGMSGTL(("winExtDLL", "read_ExtensionAgents_list2 called\n"));
@@ -1166,7 +1160,7 @@
&key_value_size);
if (retCode == ERROR_SUCCESS) {
- valueName[key_value_size-1] = NULL; /* Make sure
last element is a NULL */
+ valueName[key_value_size-1] = '\0'; /* Make sure
last element is a '\0' */
DEBUGMSGTL(("winExtDLL", "Extension agent Pathname size:
%d\n",key_value_size));
DEBUGMSGTL(("winExtDLL", "Extension agent Pathname: %s\n",valueName));
@@ -1194,7 +1188,7 @@
}
// Called by alarm to check for traps waiting to be processed.
-void subagentTrapCheck() {
+void subagentTrapCheck(unsigned int clientreg, void *clientarg) {
DWORD dwWaitResult;
BOOL bResult;
int i;
@@ -1239,7 +1233,7 @@
pEnterprise.ids = NULL;
pEnterprise.idLength = 0;
- pGenericTrap = pSpecificTrap = NULL;
+ pGenericTrap = pSpecificTrap = 0;
pTimeStamp = 0;
pVariableBindings.list = NULL;
pVariableBindings.len = 0;
@@ -1282,7 +1276,7 @@
pEnterprise.ids = NULL;
pEnterprise.idLength = 0;
- pGenericTrap = pSpecificTrap = NULL;
+ pGenericTrap = pSpecificTrap = 0;
pTimeStamp = 0;
pVariableBindings.list = NULL;
pVariableBindings.len = 0;
@@ -1322,10 +1316,6 @@
}
}
- // Events should be auto-reset, but just in case..
- ResetEvent(dwWaitResult);
-
- return 1;
}
winextdll.patch
Description: Binary data
------------------------------------------------------------------------------
_______________________________________________ Net-snmp-coders mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/net-snmp-coders
