The winExtDLL code assumes that sizeof(oid) == 4. Hence define the
'oid' type as unsigned int when building with MSVC, MinGW or Cygwin.
This patch avoids that building winExtDLL with Cygwin64 fails on the
following statement:

        netsnmp_static_assert(sizeof(oid) == sizeof(UINT));
---
 include/net-snmp/library/oid.h | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/include/net-snmp/library/oid.h b/include/net-snmp/library/oid.h
index e7adf41d97ee..8c0b2b70a6cb 100644
--- a/include/net-snmp/library/oid.h
+++ b/include/net-snmp/library/oid.h
@@ -5,6 +5,16 @@
 #include <inttypes.h>
 #endif
 
+#if defined(_WIN32) || defined(__CYGWIN__)
+/*
+ * The winExtDLL implementation assumes that the size of an OID component is
+ * 32 bits. See also the definition of SnmpVarBindList on MSDN
+ * (https://msdn.microsoft.com/en-us/library/windows/desktop/aa378929.aspx).
+ */
+typedef unsigned int oid;
+#define MAX_SUBID   0xFFFFFFFFUL
+#define NETSNMP_PRIo ""
+#else
 #ifndef EIGHTBIT_SUBIDS
 typedef u_long oid;
 #define MAX_SUBID   0xFFFFFFFFUL
@@ -14,5 +24,6 @@ typedef uint8_t oid;
 #define MAX_SUBID   0xFF
 #define NETSNMP_PRIo ""
 #endif
+#endif
 
 #endif /* NETSNMP_LIBRARY_OID_H */
-- 
2.16.3


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Net-snmp-coders mailing list
Net-snmp-coders@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/net-snmp-coders

Reply via email to