CHANGES.snmp++v3 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972
  1. Changes snmp++v3.2.23
  2. =====================
  3. - Fixed: SNMPv3 message id creation was not thread safe.
  4. - Added: IPv6 utility functions to allow IPv6 for VC++
  5. compiler (Ragavan Tetchinamourty).
  6. - Fixed: Key change algorithm now works for keys longer than
  7. 16 bytes.
  8. - Fixed: ASN parse error on 64 bit platforms.
  9. - Improved: Address classes can now handle IPv6 scope id.
  10. Length defines for IPv6 have been renamed, see address.h
  11. for new names if you get compile errors.
  12. - Fixed: With IPv6 disabled, transport errors could trigger IPv6
  13. related warning.
  14. Changes snmp++v3.2.22
  15. =====================
  16. - Fixed: After a CTarget::clear() get_type() returned type_base
  17. instead of type_ctarget (Lior Klibansky).
  18. - Fixed: The message id could be negative if engine boots is
  19. greater than 0x7fff. (Wai-Kiong Choy)
  20. - Fixed: Removed lots of compiler warnings (-Wcast-qual, -Wshadow),
  21. unused code, and other things (Jeremy Nimmer)
  22. - Added: User defined log class USER_LOG.
  23. - Fixed: Thread handle was not closed on Snmp::stop_poll_thread() on
  24. WIN32 platform. (found from Stoyan Haralampiev).
  25. - Fixed: Possible deadlock after a call to Snmp::engine_id_discovery().
  26. - Fixed: debughexprintf() did not print the last output line.
  27. - Fixed: Check for duplicate entries in engine id table.
  28. - Fixed: Don't allow SNMP INFORM over SNMPv1.
  29. - Fixed: If a SNMPv3 response was received from a different address/port
  30. than the request was sent to, no valid mapping address/port <-> enigne id
  31. was stored, so no communication was possible.
  32. Changes snmp++v3.2.21
  33. =====================
  34. - Added: New overloeaded Oid::set_data() that takes a char array instead
  35. of ulong array.
  36. - Fixed: The dotted oid string parser no longer accepts strings like
  37. "1.3.6.$public", "1.3.6$public$" or "1.3.6.$public$1".
  38. - Fixed: Removed a lot of compiler warnings on Windows x64 (with help of
  39. Sanjay Bhatia). Introduced new type for sockets (SnmpSocket), and
  40. removed SNMPHANDLE type.
  41. - Changed: Removed global mutex for v3MP and USM.
  42. - Fixed: sockets were not closed if bind failed. (found from John McCaskey)
  43. - Fixed: Engine id discovery did not work when sending SNMPv3 request
  44. to IPv4 Address over IPv6 socket.
  45. - Fixed: For async SNMPv3 requests that resulted always in a unknown
  46. engine id or not in time report from the agent the Snmp class continued
  47. to resend a request to the agent.
  48. - Fixed: USM was not thread safe (found from John McCaskey):
  49. Changing users from two different threads or changing users
  50. while messages of these users are processed could cause
  51. segmentation faults. The following functions of USM now behave
  52. different than before or require calls to new functions:
  53. all three get_user() functions, peek_first_user(), peek_next_user(),
  54. peek_first_luser(), peek_next_luser(), get_user_count().
  55. If you use any of these functions, read the new documentation in
  56. usm_v3.h and change your code (like it was done for the QtExample).
  57. - Changed: The functions to set/get the trap listen port of
  58. CNotifyEventQueue ar no longer static. Use the new functions
  59. Snmp::notify_set/get_listen_port() instead.
  60. - Removed: Old X11 code, user defined events and timeouts.
  61. - Improved: Counter64 now uses 64 bit integer for math
  62. operations, instead of long double.
  63. - Fixed: Zero length UDP packets will no longer trigger
  64. a transport-level-failed callback.
  65. Changes snmp++v3.2.20a
  66. ======================
  67. - Improved: Detect too large received messages.
  68. - Improved: Removed hard coded limit for max number of Vbs
  69. (PDU_MAX_VBS) in a Pdu object.
  70. - Fixed: Bug in SNMPv3 encryption code which will lead to a
  71. crash after a random number of encryptions (Stuart Marks).
  72. - Improved: Compilation of address.cpp for Solaris.
  73. Changes snmp++v3.2.19
  74. =====================
  75. - Fixed: Requests with nonzero but wrong security engine id
  76. now result in a unknown engine id report.
  77. - Added: New functions USM::add_usm_user() and
  78. new functions to remove engine ids and hosts from
  79. the v3MP and USM tables.
  80. - Changed: command line arguments of consoleExamples.
  81. Changes snmp++v3.2.18
  82. =====================
  83. - Added: Privacy protocol 3DES. The Auth/Priv interface was
  84. modifed. (based on patch from Pierre Pacchioni)
  85. - Fixed: Possible memory leak in mp_v3.cpp v3MP::snmp_parse(..).
  86. - Fixed: Uninitialized variable in asn1.cpp asn_parse_length(..).
  87. - Fixed: Uninitialized variables in snmpmsg.cpp
  88. SnmpMessage::unload when v3MP::I->snmp_parse() fails.
  89. (Reported by Rob Crawford)
  90. - Changed: ID of privacy protocol AES128 now is 4
  91. as required by the RFC.
  92. - Fixed: Vb::get_value(ptr, len, maxlen) may write
  93. maxlen+1 bytes into ptr buffer (Daniel Suman).
  94. This function now is Vb::get_value(ptr, len, maxlen,
  95. add_null_byte) where the default for add_null_byte
  96. is false.
  97. - Improved: Workaround for Cisco SNMP agents that set
  98. request ids to 0x7fffffff in report messages.
  99. - Fixed: Make auth_priv.h/cpp compile if both OpenSSL and
  100. LibTomCrypt are defined.
  101. - Added: Basic support for VxWorks with PPC603 (Thanks to
  102. Lee Noll).
  103. Changes snmp++v3.2.17
  104. =====================
  105. - Changed: Updated auth_priv.cpp for LibTomCrypt 1.02
  106. - Changed: Moved logging classes from agent++ into
  107. snmp++. (Fedja Jeleskovic)
  108. Function debug_set_logfile() has been removed, use
  109. DefaultLog::init(new AgentLogImpl("filename")) and
  110. DefaultLog::log()->set_filter() instead.
  111. All logging within snmp++ will be moved to the LOG_XXX
  112. macros and the debugprintf() function will be removed.
  113. - Changed: Renamed "#ifdef alpha" to "#ifdef __osf__". When
  114. compiling for DigitalUnix/Tru64 make sure, that __osf__
  115. is defined.
  116. Changes snmp++v3.2.16
  117. =====================
  118. - Improved: notify_register() now returns correct error codes.
  119. - Added: Snmp::start_poll_thread() that starts a new thread
  120. that polls for async responses and informs/traps. The thread
  121. will be stopped automatically in the destructor. It also can
  122. be stopped using Snmp::stop_poll_thread(). (Fedja Jeleskovic)
  123. - Added: New transport layer error code
  124. SNMP_CLASS_TL_ACCESS_DENIED for (errno == EACCES)
  125. - Improved: new define SNMP_PP_MUTABLE that can be
  126. defined to mutable for compilers that support
  127. mutable member variables.
  128. - Changed: renamed OctetStr::set_hex_np_char() to
  129. set_np_char()
  130. - Improved: get_printable() will return the same buffer
  131. for each call if the object wasn't changed.
  132. - Added: Pdu::get_max_vbs() to get the value of
  133. PDU_MAX_VBS at runtime.
  134. - Fixed: Bug in snmperrs.h (Jason Olenhouse)
  135. Changes snmp++v3.2.15
  136. =====================
  137. - Fixed: Bug in asn1.cpp for systems where
  138. sizeof(long) != sizeof(*long) (Hu Shu)
  139. - Fixed: timeout calculation in
  140. EventListHolder::SNMPProcessEvents() (Xu Manjiang)
  141. - Fixed: OctetStr::clear() now sets the length to
  142. zero (Mr. AWD)
  143. - Fixed: Set sin_len of struct sockaddr_in before calling
  144. bind(). Define CYGPKG_NET_OPENBSD_STACK to enable it.
  145. (Harald Kuethe)
  146. - Changed: Pdu class checks Vb validity after all
  147. assignments. It is no longer possible to add
  148. a Vb that is not valid.
  149. Some set/get member functions now return bool
  150. instead of void.
  151. Changes snmp++v3.2.14
  152. =====================
  153. - Improved: Return value of Pdu functions
  154. get/set_notify_id and get/set_notify_enterprise.
  155. (Marek Malowidzki)
  156. - Fixed: Check return value of new in
  157. SnmpCollection::operator+=() (Marek Malowidzki)
  158. - Fixed: Setting a byte with Address::operator[] will
  159. set validity of the object to true.
  160. - Improved: Behaviour of OctetStr::get_printable() for
  161. non printable strings can now be configured.
  162. Changes snmp++v3.2.13a
  163. ======================
  164. - Fixed: Version info was not updated.
  165. - Fixed: Compilation problems with _NO_SNMPv3
  166. - Changed: The user "initial" is no longer automatically
  167. added to the USM.
  168. - Fixed: Oid class freed memory twice after
  169. failed call to operator+=().
  170. - Added: Support for AIX 5 (by courtesy of
  171. Anders Malmborg)
  172. Changes snmp++v3.2.12a
  173. ======================
  174. - Fixed: wrong encryption/decryption for
  175. DES and IDEA.
  176. - Fixed: consoleExamples can use IPv6.
  177. - Fixed: Do not accept illegal lengths for
  178. authentication parameters.
  179. - Removed: Obsolete XExample.
  180. - Fixed: Compilation problem in address.cpp
  181. if __sun is defined (Kostas Lykiardopoulos)
  182. - Improved: Modified constructor of Snmp class
  183. to allow binding to IPv6 socket.
  184. - Added: AES can now be used with OpenSSL.
  185. - Improved: Compilation under Tru64.
  186. - Fixed: Return code of delete_entry and
  187. delete_entries in class USMUserTable returned
  188. SNMPv3_MP_OK instead SNMPv3_USM_OK.
  189. Changes snmp++v3.2.11
  190. =====================
  191. - Improved: Declared some methods as const
  192. (Marek Malowidzki).
  193. - Improved: Use shortest possible encoding for
  194. serializing SNMP messages to improve compatibility
  195. with buggy/broken SNMP-Tools (Henning Eggers).
  196. - Fixed: Compilation problems on SUN
  197. (Fabrice Bacchella)
  198. - Improved: declared some methods as const
  199. - Improved: Moved the headers to include/snmp_pp/
  200. to avoid name colissions.
  201. - Improved: QtExample can receive traps/informs.
  202. - Fixed: Compilation problems with BC++ 5.0
  203. (Vinoth, Christian Cheney)
  204. - Improved: Added namespace Snmp_pp (Sorin C.)
  205. Changes snmp++v3.2.10a
  206. ======================
  207. - Changed: Added two defines _USER_DEFINED_EVENTS
  208. and _USER_DEFINED_TMEOUTS (enabled by default)
  209. to switch off the user defined event/timeout queues.
  210. - Improved: Added const to various functions and
  211. function arguments (Marek Malowidzki)
  212. - Fixed: Added missing DLLOPTs in msec.h (Christian Cheney).
  213. - Improved: The v3MP uses the Snmp object that received
  214. the message for sending out report messages (needed
  215. for systems with multiple IP addresses).
  216. The constructor of the v3MP class was changed, as
  217. the pointer to the Snmp object is no longer needed
  218. at construction time.
  219. - Changed: Snmp::notify_register() no longer binds
  220. to all interfaces, but to the address specified
  221. in the constructor of the Snmp object.
  222. Changes snmp++v3.2.9d
  223. =====================
  224. - Improved: Removed usage of some multi-threading
  225. critical C routines (for example strtok). Although
  226. on many systems, these routines are multi-threading
  227. safe, this may not be true for some systems.
  228. - Fixed: High CPU usage in SNMPProcessEvents() on
  229. Win32 platform.
  230. - Fixed: SNMPv1 trap sysUpTime TimeTicks where not
  231. decoded correctly as unsigned integer value, resulting
  232. in a parse error when sysUpTime > 2^31-1.
  233. - Improved: Log levels.
  234. - Fixed: USMUserNameTable::add_entry() did not update
  235. the privacy password length.
  236. - Improved: Examples now use the
  237. Snmp::socket_startup() on Win32 platforms.
  238. - Added: Two static methods Snmp::socket_startup() and
  239. Snmp::socket_cleanup() that initialize/cleanup
  240. Winsock library on WIN32 and do nothing for
  241. other platforms. The startup method must be
  242. called before creating Snmp or Address objects.
  243. - Changed: Type of some vars in UsmUserNameTableEntry
  244. from uchar* to OctetStr. Check if your code uses
  245. this struct.
  246. - Changed: engineBoots and engineTime are set to 0 for
  247. SNMPv3 noAuthNoPriv messages.
  248. Changes snmp++v3.2.8
  249. ====================
  250. - Added: Support for OpenSSL.
  251. - Fixed: Compile problem in uxsnmp.cpp.
  252. Changes snmp++v3.2.7c
  253. =====================
  254. - Fixed: Synchronization problem with mpV3::Cache.
  255. (Henning Eggers)
  256. - Fixed: Memory leak in OctetStr::from_hex_string.
  257. (Kent Gibson)
  258. - Changed: EventListHolder::SNMPProcessEvents()
  259. param is now in milliseconds (was seconds).
  260. - Fixed: Memory leak if an async SNMPv3 message timed
  261. out (Henning Eggers).
  262. - Added: Method Snmp::broadcast_discovery() to do
  263. SNMP broadcast discovery.
  264. - Improved: Console examples now accept 0 retries,
  265. removed warnings with gcc 3.2, and v3MP is now
  266. always created.
  267. - Added: Qt 3.1 example that demonstrates SNMP++v3
  268. usage with a GUI (Trolltechs Qt 3.1).
  269. - Added: Methods to store, load, and query USM users.
  270. - Improved: Some minor clean-ups.
  271. Changes snmp++v3.2.6b
  272. =====================
  273. - Fixed: GenAddress passed IPv4 addresses as IPv6
  274. addresses.
  275. - Changed: By default IDEA is not compiled into
  276. SNMP++ by default because patent licensing is
  277. required for commercial use. Please #define
  278. _USE_IDEA if you want to compile IDEA into SNMP++.
  279. For more details please read also README.v3.
  280. - Fixed: Do not add -Dsun to compile command. If
  281. you have problems with the SnmpCollection template
  282. look at the instructions in collect.h.
  283. - Fixed: Destroy Mutex in ~EventListHolder().
  284. - Improved: Lots of cleanups for the address classes.
  285. This leads to the following incompatibilities to
  286. former versions:
  287. + Enums addr_type and version_type are now inside
  288. class Address
  289. + MacAddress, IpxAddress and IpxSockAddress are no
  290. longer included by default, but can be enabled
  291. in config_snmp_pp.h
  292. Changes snmp++v3.2.5d
  293. =====================
  294. - Improved: Made AuthMD5::password_to_key more
  295. robust against empty passwords.
  296. - Changed: The Win32 DLL export macros now use
  297. SNMP_PP_DLL instead _USRDLL.
  298. - Changed: Moved VC++ project files in a
  299. separate package.
  300. - Improved: Minor issues with IPv6 support.
  301. - Improved: Socket handling.
  302. - Fixed: uxsnmp.cpp: Detecting error from socket()
  303. return values.
  304. - Fixed: Moved SNMPAddInput() SNMPRemoveInput()
  305. SNMPAddTimeout and SNMPREmoveTimeout to the
  306. class EventListHolder
  307. - Fixed: Unique Id generation in CUDEventQueue and
  308. CUTEventQueue.
  309. - Fixed: Bugs in Vb::get_value() methods that take a
  310. char* or unsigned char* as argument
  311. - Added: operator+() for Oids (Alexander Gutkin)
  312. - Improved: Cleanups in queues
  313. Changes snmp++v3.2.4a
  314. =====================
  315. - Improved: Synchronous and asynchronous SNMP
  316. request processing is now separated. Thus,
  317. the global event lists have been removed.
  318. Each Snmp class now holds its own event
  319. lists.
  320. To eliminate the use of global event lists
  321. a new class EventListHolder was defined. Two
  322. new files eventListHolder.h and
  323. eventListHolder.cpp contain now declaration
  324. and definition of that class respectively.
  325. That new class is a container of former
  326. eventList global data structure and former
  327. global user defined events, user-defined
  328. timeouts, notifications and all outstanding
  329. messages. (LiorK)
  330. - Improved: collect.h (Bill McKinnon)
  331. - Improved: FreeBSD 5.0 support.
  332. - Added: Makefile.gcc_solaris for compilation
  333. with GNU C++ compiler on Solaris.
  334. Changes snmp++v3.2.3b
  335. =====================
  336. - Fixed: Counter64::get_printable() could print
  337. negative values (Yakov Y.)
  338. - Note: New Makefiles assume that you have
  339. defined _USE_LIBTOMCRYPT when a "crypt"
  340. directory is present in the same folder as
  341. the "snmp++" and "agent++" directories.
  342. - Fixed: Compilation problems without _SNMPv3
  343. defined.
  344. - Fixed: PDU length computation for encrypted
  345. SNMPv3 PDUs.
  346. - Improved: New v3MP class.
  347. - Fixed: Estimated length calculation for
  348. encoded PDU.
  349. Changes snmp++v3.2.2d
  350. =====================
  351. - Fixed: Possible timeouts under heavy load
  352. in a multi-threaded environment.
  353. [Pavel Spakovsky]
  354. - Fixed: DLL support for VC++ did not allow
  355. static linking.
  356. - Added: Computation of BER encoded length of
  357. a Pdu.
  358. - Added: VC++.NET project files and fixed DLL
  359. support.
  360. - Fixed: Errors in Counter64::c64_to_ld() and
  361. Counter64::ld_to_c64() [Mikhail Evstiounin]
  362. - Improved: Prepared for AES usage replacing
  363. libDES.
  364. - Fixed: Compilation problems with G++3.2
  365. (needs updated libDES download).
  366. Changes snmp++v3.2.1d
  367. =====================
  368. - Fixed: Memory leak (40 bytes) when adding an
  369. user to usm.
  370. - Improved: Some cleanups (#include, const).
  371. - Fixed: Due to possible race condition in
  372. MyMakeReqId() (uxsnmp.cpp) two requests could
  373. get the same request id.
  374. - Fixed: const casting caused problems with
  375. AIX compiler.
  376. Changes snmp++v3.2.1
  377. ====================
  378. - Improved: Use zero length user name for
  379. SNMPv3 discovery.
  380. - Lots of cleanups.
  381. Changes snmp++v3.2a
  382. ===================
  383. - Fixed: Compilation problem with address.cpp on
  384. Solaris.
  385. Changes snmp++v3.2
  386. ==================
  387. - Added: IPv6 support.
  388. - Improved: moved the USM functions into the class
  389. USM. To add or delete users, you will now have to
  390. do the following (see usm_v3.h for more details):
  391. Usm *usm = mpGetUsm();
  392. usm->add_usm_user(...);
  393. usm->delete_usm_user(...);
  394. - Fixed: Possible SegFault in notify queue
  395. (Lior Klibansky)
  396. - Fixed: Timeout problem in event list (Don Dietz)
  397. - Fixed: Don't use isdigit() for BCC (Eric Zerbib)
  398. - Added: clear() method to SnmpCollection
  399. - Fixed: added clone() method to Pdu class, so
  400. SnmpCollection<Pdu> will work again.
  401. - Added: Make notify socket decriptor available in
  402. Snmp class (Don Dietz)
  403. Changes snmp++v3.1.6c
  404. =====================
  405. - Fixed: mp_v3.cpp: Unsigned integer values were
  406. not BER decoded correctly for SNMPv3 messages.
  407. - Fixed: Some errors when compiling with -ansi
  408. - Improved: Class AuthPriv does no longer depend
  409. on USM.
  410. Changes snmp++v3.1.6b
  411. =====================
  412. - Added: BCC32 support.
  413. - Added: DLLOPT decoration for debugprintf.
  414. Changes snmp++v3.1.6a
  415. =====================
  416. - Fixed: Agent address of v1 trap PDUs is set from
  417. received SNMPmessage if address is not "0.0.0.0".
  418. - Improved: Free BSD support.
  419. - Improved: UdpAddress performance.
  420. - Added: Pdu::set_v1_trap_address to set v1
  421. trap address. If not set, SNMP++ will use the
  422. default host address.
  423. - Improved: Added casts in auth_priv.cpp and
  424. idea.cpp.
  425. Changes snmp++v3.1.5
  426. ====================
  427. - Fixed: Memory leak during processing of
  428. SNMPv3 traps
  429. - Fixed: Memory leak in agents when sending a
  430. UnknownEngineID report
  431. - Fixed: Set contextEngineId in Pdu if it was
  432. not set by the user.
  433. - Improved: Prepared authentication/privacy module
  434. for easy extensibility.
  435. - Fixed: Convert asn1.cpp back to unix CR/LF ;-)
  436. Changes snmp++v3.1.4b
  437. =====================
  438. - Fixed: Possible crash in ASN.1 BER decoding
  439. caused by incorrect SNMP BER encodings.
  440. Changes snmp++v3.1.4a
  441. =====================
  442. - Fixed: Compilation problems with non Linux
  443. systems regarding *_r system calls.
  444. - Fixed: Handling of unusual v3 msgFlags and
  445. msgSecurityModels.
  446. Changes snmp++v3.1.4
  447. ====================
  448. - Added: Support for Opaque type. The Opaque
  449. type is implemented as OpaqueStr as subclass
  450. of OctetStr.
  451. Changes snmp++v3.1.3i
  452. =====================
  453. - Fixed: ASN.1 encoding of very long OIDs
  454. (128 subidentifiers) could cause seg.fault.
  455. - Improved: Removed obsolete #includes and
  456. comments.
  457. Changes snmp++v3.1.3h
  458. =====================
  459. - Fixed: Compilation problems introduced by
  460. debugging output redirection on Solaris.
  461. - Added: Makefile.hpux11 for HPUX11 aCC.
  462. - Improved: ASN.1 decoding of integers.
  463. - Fixed: Sending SNMP requests form within
  464. asynchronous callback functions.
  465. Changes snmp++v3.1.3g
  466. =====================
  467. - Fixed: ASN.1 parse error when parsing some
  468. unsigned integers introduced in v3.1.3c.
  469. - Fixed: Completed work on redirecting debugging
  470. output.
  471. Changes snmp++v3.1.3f
  472. =====================
  473. - Improved: SNMP++ is no longer busy looping
  474. when waiting for synchronous requests.
  475. (Changed select timeout in ProcessPendingEvents
  476. in eventlist.cpp from 0 to 10 usec).
  477. - Improved: Debugging output can now be
  478. redirected to a file.
  479. Changes snmp++v3.1.3e
  480. =====================
  481. - Fixed: Dropped v1 traps because of a wrongly
  482. detected ASN.1 parse error.
  483. - Fixed: Wrongly added trap oid and timestamp
  484. variable bindings for received notifications.
  485. - Added: _NO_THREADS in config.h to facilitate
  486. disabling of threads (contributed by Martin
  487. Janzen).
  488. Changes snmp++v3.1.3d
  489. =====================
  490. - Fixed: Traps sent out may had wrong security
  491. level noAuthNoPriv.
  492. Changes snmp++v3.1.3c
  493. =====================
  494. - Fixed: Missing type checks in BER decoding
  495. have been added.
  496. Changes snmp++v3.1.3b
  497. =====================
  498. - Fixed: A pdu with an unknown engineId report
  499. was overwritten by a second pdu with an
  500. unknown message id status when they both were
  501. send from a multi-homed agent that sends
  502. responses not only from one source address.
  503. - Fixed: User name returned by agent in error
  504. conditions did not match configured user by
  505. command generator in some cases.
  506. Changes snmp++v3.1.3a
  507. =====================
  508. - Fixed: Bugs related Solaris 64bit support.
  509. - Fixed: Handling of the OPAQUE syntax in
  510. snmpmsg.cpp.
  511. Changes snmp++v3.1.3
  512. ====================
  513. - Fixed: Now using reentrant system functions
  514. like gethostbyname_r, gethostbyaddr_r, and
  515. strtok_r.
  516. - Fixed: Command line parameter handling of
  517. the consoleExamples.
  518. - Fixed: MyMakeReqID did not locked its call to
  519. snmpEventList->GetEntry against other threads.
  520. - Fixed: Locking for eventlist.cpp
  521. - Added: Remove operation in SnmpCollection
  522. template.
  523. Changes snmp++v3.1.2a
  524. =====================
  525. - Target::get_type() is now const.
  526. - Improved: Trap receiver example.
  527. Changes snmp++v3.1.2
  528. ====================
  529. - Fixed: Handling of responses to INFORM-requests.
  530. Changes snmp++v3.1.1
  531. ====================
  532. - Fixed: Added locking for SNMPv3 MP cache.
  533. - Improved: AGENT++ is no longer needed for console
  534. examples.
  535. - Fixed: SNMP version was not set for received
  536. notifications.
  537. Changes snmp++v3.1
  538. ==================
  539. - Replaced RSAEURO by LIBDES which is free even for
  540. commercial use.
  541. Changes snmp++v3.0.2b
  542. =====================
  543. - Added: Snmpx::Snmpx(int&, const UdpAddress&) to
  544. support binding on a specific IP address.
  545. Changes snmp++v3.0.2a
  546. =====================
  547. - Fixed: Filtering notifications.
  548. Changes snmp++v3.0.2
  549. ====================
  550. - Fixed: Compilation problems when using async requests
  551. on Win32 platforms.
  552. - Improved: In v3.0.1 pending requests could block
  553. requests from other threads. This has been fixed.
  554. Changes snmp++v3.0.1
  555. ====================
  556. - Added: SNMP++v3.0.1 is now thread-safe!
  557. - Added: Snmp::report can send SNMPv3 reports.
  558. Changes snmp++v3.0n
  559. ===================
  560. - Added: SNMP++ sets the contextEngineID of a SNMPv3
  561. PDU if it is not set by the user.
  562. Changes snmp++v3.0m
  563. ===================
  564. - Fixed: Removed all deprecated #include <values.h>.
  565. - Fixed: Solaris makefile for Solaris 7.0 (removed
  566. Templates.DB related stuff)
  567. Changes snmp++v3.0l
  568. ===================
  569. - Fixed: Entries added to the SNMP++ usmUserTable during
  570. discovery did not appear in the AGENT++ USM MIB.
  571. Changes snmp++v3.0k
  572. ===================
  573. - Fixed: Setting a usmOwnKeyChange object with a zero
  574. length string caused a segmentation fault.
  575. - Fixed: Compilation problems with BSD Unix.
  576. - Fixed: Renaming of snmpv3BootCounter file on WinNT.
  577. Changes snmp++v3.0j
  578. ===================
  579. - Fixed: snmpmsg.cpp: Check for exceeding maximum
  580. response PDU size, did not check response PDUs only.
  581. This bug caused SNMP++ to not send v3 traps.
  582. - Fixed: Setting trap OIDs when receiving traps.
  583. Changes snmp++v3.0i
  584. ===================
  585. - Fixed: OIDs for snmpAuthProtocols and snmpPrivProtocols
  586. - Fixed: Sending of v1 traps did not set IP address of
  587. the sending host correctly when the gethostname failed
  588. for that host.
  589. Changes snmp++v3.0h
  590. ===================
  591. - Fixed: (usm_v3.cpp): Handling of maxMsgSize.
  592. - Fixed: (asn1.cpp): BER encoding of ASN.1 header
  593. length did not support length above 65535 bytes. Now
  594. lengths up to 2^31-1 bytes are supported.
  595. - Fixed: (usm_v3.cpp): Did not check length of userName
  596. before copying it. Could have caused problems with
  597. incorrect SNMPv3 implementations.
  598. Changes snmp++v3.0g
  599. ===================
  600. - Fixed: BER encoding of unsigned 64bit integers.
  601. High values (all nine most significant bits are 1) were
  602. incorrect encoded.
  603. - Fixed: Removed compilation warnings for timetick.cpp and
  604. integer.cpp
  605. Changes snmp++v3.0f
  606. ===================
  607. - Fixed: Several DLLOPT decorators had been missing in asn1.h.
  608. - Added: Prototype for freeSmivalDescriptor in snmpmsg.h.
  609. Changes snmp++v3.0e
  610. ===================
  611. - Fixed: Bug in idea.h.
  612. - Fixed: Bug in mp_v3.cpp.
  613. Changes snmp++v3.0d
  614. ===================
  615. - Fixed: Bug in Oid::RnCompare()
  616. - Fixed: mpIncSnmpUnknownSecurityModels() increased the
  617. wrong counter.
  618. - Update: The changes of the official SNMP++ 2.84 from HP were
  619. merged into snmp++v3.
  620. - Changed: The snmpEngineBoots counters for different
  621. snmpEntities can now be saved in one file. For this
  622. the function mpInit had to be changed. See
  623. include/v3.h for more information about the new functions
  624. getBootCounter, saveBootCounter and decodeEngineId.
  625. Example:
  626. char *filename = "snmpv3_boot_counter";
  627. unsigned int snmpEngineBoots = 0;
  628. OctetStr engineId("exampleId");
  629. // you may use your own methods to load/store this counter
  630. status = getBootCounter(filename, engineId, snmpEngineBoots);
  631. if ((status != SNMPv3_OK) && (status < SNMPv3_FILEOPEN_ERROR))
  632. cerr << "Error getBootCounter: " << status << endl;
  633. snmpEngineBoots++;
  634. status = saveBootCounter(filename, engineId, snmpEngineBoots);
  635. if (status != SNMPv3_OK)
  636. cerr << "Error saveBootCounter: " << status << endl;
  637. mpInit(&snmp, engineId, snmpEngineBoots);
  638. - Fixed: Reports for encryption error were sent with a
  639. securityLevel authPriv, now authNoPriv is used.
  640. Reports for unknown security name were sent with
  641. user 'initial', now the user name of the request
  642. is used.
  643. - Fixed: Snmp::trap now sets the timestamp of traps for WIN32
  644. and for non WIN32 to the same value if the user didn't
  645. set it with pdu::set_notify_timestamp().
  646. Note: Snmp::trap does not set the timestamp to the
  647. uptime of the system or the application. The timestamp
  648. is computed from the time elapsed since 1970/1/1.
  649. - Fixed: msec::refresh() now sets the correct time for WIN32
  650. - Changed: mpAddToEngineIDTable now replaces host and port
  651. when adding an engineID that is already in the table
  652. - Fixed: OctetStr::from_hex_string()
  653. Changes snmp++v3.0c
  654. ===================
  655. - Fixed: Class Address had no default constructor.
  656. - Added: mpIncSnmpUnknownSecurityModels(),
  657. mpIncSnmpInvalidMsgs(),
  658. mpIncSnmpUnknownPDUHandlers().
  659. Changes snmp++v3.0b
  660. ===================
  661. - Fixed: SNMPv3 reports for inform requests are now sent
  662. through the socket that is used to listen for
  663. traps/informs.
  664. - Added the static method
  665. CNotifyEventQueue::set_listen_port(int port);
  666. to set the trap listen port. Call this method before calling
  667. Snmp::notify_register(...). The default port is 162.
  668. Changes snmp++v3.0a
  669. ===================
  670. - Internal changes in SNMPv3 implementation
  671. - Changes in structures for SNMPv3 async requests
  672. - Some documentation added.
  673. - Fixed: usmDeleteUserName mixed userName and securityName.
  674. Changed parameter of usmDeleteUserName to userName
  675. and added new function usmDeleteSecurityName.
  676. - Fixed: the SNMP version of targets created through
  677. CTarget(const CTarget) was set to version1
  678. (same for operator=(constCTarget))
  679. - Changed call of "delete X" to "delete [] X" where necessary
  680. - Moved some structure definitions from header files to cpp-files.
  681. Changed some internal structures from unsigned char to OctetStr.
  682. Changes snmp++v3.0:
  683. ===================
  684. - uxsnmp.cpp: line 656-660
  685. Added WSACleanup() routine for NT.
  686. - smi.h: line 141
  687. Changed ASN.1 tag value of UInt32 to 2 (same as Gauge32)
  688. #define sNMP_SYNTAX_UINT32 sNMP_SYNTAX_GAUGE32
  689. removed duplicate case labels in asn1.cpp, snmpmsg.cpp and gauge.cpp
  690. - snmpmsg.cpp: line 355
  691. Changed snmpTrapOID to
  692. tempvb.set_oid("1.3.6.1.6.3.1.1.4.1.0");
  693. - Added const to Pdu::get methods where applicable.
  694. - Added static function OctetStr::from_hex_string().
  695. - Added DLLOPT to all public functions / classes.
  696. - Using memset and memcpy instead the deprecated counterparts
  697. bzero and bcopy.
  698. - Using WinSockets on WIN32 platforms.
  699. - When converting an oid string to an oid (Oid::StrToOid) now an
  700. arbitrary part of the oid can be given as a string value enclosed in
  701. $ characters. For example the oid string
  702. "1.3.6.1.6.1.12.1.3.$public0$"
  703. will result to the oid
  704. 1.3.6.1.6.1.12.1.3.112.117.98.108.105.99.95.48
  705. - the function mpInit is now called with a pointer to an Snmp object
  706. and an engineID: int mpInit(Snmp *snmp, const OctetStr& snmpEngineID);
  707. - New target (UTarget for SNMPv3):
  708. - Methods to get/set security_name and security_model:
  709. void get_security_name( OctetStr& security_name_oct);
  710. void set_security_name( const OctetStr& new_security_name);
  711. void set_security_model(int sec_model);
  712. int get_security_model();
  713. - If you know the engine_id of the target (no engine_id discovery):
  714. void set_engine_id( const OctetStr& new_engine_id);
  715. void get_engine_id( OctetStr& engine_id_oct);
  716. --> most methods of CTarget do exist for UTaget: see target.h
  717. For SNMPv3 there is only one valid security_model (SNMP_SECURITY_MODEL_USM).
  718. If you set the security_model to SNMP_SECURITY_MODEL_V1 (or V2) you can use
  719. te UTarget to send SNMPv1 (v2c) requests.
  720. - New methods for Pdu objects:
  721. void set_security_level( const int level);
  722. int get_security_level();
  723. void set_context_name(const OctetStr &name);
  724. void get_context_name(OctetStr &name);
  725. void set_context_engine_id(const OctetStr &id);
  726. void get_context_engine_id(OctetStr &id);
  727. valid security_levels are: SNMP_SECURITY_LEVEL_NOAUTH_NOPRIV,
  728. SNMP_SECURITY_LEVEL_AUTH_NOPRIV and SNMP_SECURITY_LEVEL_AUTH_PRIV
  729. - The CTarget can no longer be used as a SNMPv3 target. The methods
  730. mpBuildCommunity and mpParseCommunity don't exist any longer.
  731. - The consoleExamples now use a CTarget for SNMPv1/v2c requests and
  732. UTarget for SNMPv3 requests. There are new examples: snmpInform
  733. (to send inform Requests) and receive_trap.