summaryrefslogtreecommitdiff
path: root/CHANGES
blob: 85572f5579ce40aa8f0e9eb44de1ca3d0a178e14 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
Thu Oct 11 20:51:52 MSD 2007

Changes to version 2.0.10
-------------------------

- Use class instances in example scripts exceptions for latest Python
  compatibility.

Fri Apr  7 22:28:41 MSD 2006

Changes to version 2.0.9
------------------------

- Bugfix to pysnmp/bulkrole.py: role.manager() instantiation 
  parameters fixed
- Bugfix to pysnmp/bulkrole.py: propagate transport timeout setting
  from bulkrole.manager scope to role.manager.
- Bugfix to pysnmp/asn1.py: do not attempt to decode signed int into 
  unsigned at UNSIGNED32, better fail later on value range constraint.
- INTEGER BER codec at pysnmp/asn1.py reworked fixing negative values
  encoding bug.

Wed Dec 18 20:39:00 MSD 2002

Changes to version 2.0.8
------------------------

- Convert examples/snmptable.py into examples/snmpwalk.py as the
  functionality of the former seems to closer mimic Net-SNMP's
  snmpwalk behavior.
- The examples/snmpwalk.py fixed to include requested OID in the
  search range.

Thu Nov 28 18:58:45 MSD 200

Changes to version 2.0.7
------------------------

- Bugfix to asn1.py, incorrect ASN.1 tag used for UNSIGNED32 type.
- Bugfix to v1.py & v2c.py modules, GAUGE32 was missing from the
  list of allowed value-bind types.

Fri Sep 20 08:35:43 MSD 2002

Changes to version 2.0.6
------------------------

- Bugfix: in bulkrole.py, ignore transport errors by catching
  error.Error based exceptions.
- Use repr() when reporting garbaged octet stream on decoder input.

Tue Jul 16 12:19:35 MSD 2002

Changes to version 2.0.5
------------------------

- Bugfix: use long ints in integers decoders of asn1.py to prevent a
  wrapover on left shift what sometimes decodes to negative in unsigned
  data types decoders.

- Verify against negative initializers to unsigned data types.

- Split up BER decoders of asn1.INTEGER and asn1.UNSIGNED32 classes,
  derive asn1.COUNTER64 class from asn1.UNSIGNED32 for clarity.

Tue Jun 25 8:34:39 MSD 2002

Changes to version 2.0.4
------------------------

- Bugfix: the 'UPTIME' BER tag removed from asn1.BERHEADER.TAGS dictionary
  as it seems to duplicate the 'TIMETICKS' flag what accidentally causes
  pysnmp.asn1.TypeError exception.

- The FLAGS dictionaries in various classes split up to CLASS and
  FORMAT ones to better follow BER specification.

- The asn1.TAGGEDSEQUENCE class renamed to asn1.SEQUENCE as the latter
  seems not to be defined and used in SNMP context.

Fri Jun 21 08:54:43 MSD 2002

Changes to version 2.0.3
------------------------

- Bugfix: role.agent class constructor must be passed a list type parameter.

Fri Jun   7 10:35:30 MSK 2002

Changes to version 2.0.2
------------------------

- Bugfix: non-existent exception class error.PySNMPError replaced with
  error.Generic in asynchronous code. 

- Bugfix: check that exc_type is not None in asyncmgr.py
  telnet_server.request_done_fun() to see if an exception
  occurred.

Mon May  20 18:55:09 MSK 2002

Changes to version 2.0.1
------------------------

- The whole package has been completely redesigned and rewritten
  in a more object-oriented fashion.

  Major changes from user's point of view include:

  * SNMP v.2c support added;

  * SNMP agent (server) support added to SNMP transport code;
 
  * API level compatibility with previous PySNMP versions is
    not preserved at the moment (work on the compatibility layer is
    in progress).

Changes to version 1.6.5
------------------------

- Distutils support added by drt@un.bewaff.net.

Tue Sep  25 18:34:56 MSK 2001

Changes to version 1.6.4
------------------------

- The snmpagent.py script previously contributed by Cayce Ullman
  updated by Ivan Begtin to run with the latest versions of PySNMP.

- Oddly handled exceptions fixed to msession.multisession() class. Thanks
  to Chris Green for pointing out.

- Inconsistent default return value fixed in multisession.retrieve() method.
  This bug may lead to IndexError on timed out SNMP request. Thanks to
  Chris Green for a patch.

Fri Jun  22 08:55:39 MSK 2001

Changes to version 1.6.3
------------------------

- Bug fixed in examples/async_snmpget.py: this example script misses
  async_session() class structure change introduced in version 1.6.1.
  Thanks to Chris Green for a patch.

- Also, a minor improvement has been made to examples/async_snmpget.py
  script -- now this script handles cases when remote SNMP agent returns
  SNMP error in reply.

Sat Jun  16 11:06:34 MSK 2001

Changes to version 1.6.2
------------------------

- Missing "opaque" ASN.1 data type support committed to BER engine. Thanks
  to Carl Bray for providing a patch for it.

Sat May  5 10:02:40 MSK 2001

Changes to version 1.6.1
------------------------

- SNMP traps support has finally been completed. Example agent and manager
  along with some documentation included. Thanks to Ted Crossman for initial
  traps handling code.

- The ber.decode_ipaddress() method renamed to ber.decode_ipaddr() to
  look as a counterpart to ber.encode_ipaddr(). Compatibility stub
  ber.encode_ipaddress() remained.

- __doc__ strings improved throughout the code.

- BER engine code slightly optimized for a little bit better performance.

Thu Mar 22 08:37:02 MSK 2001 

Changes to version 1.5.5
------------------------

- In objid.objid(), the str variable name replaced with txt to avoid
  interferention with str() builtin function. Thanks to Kal Lin for
  pointing it out.

- Bug fixed in ber.encode_an_integer() and ber.decode_integer() methods.
  They used to handle negative integers in a wrong way. Thanks to
  Tim Kwiatkowski <jtk@bluesky.ecas.ou.edu> who has fixed this problem
  by rewriting corresponding code from the scratch.

Fri Mar  9 19:02:56 MSK 2001

Changes to version 1.5.4
------------------------

- Package documentation added (still not quite complete).

- The implementation of ber.encode_oid() method replaced with a more
  consistent one, as suggested by Jarkko Torppa. This also removes a
  limitation on the size of sub-Object IDs to be encoded.

- Bug fixed in pysnmp.asynsnmp module -- import of pysnmp components was
  incorrect.

- Bug fixed in multisession.retrieve() -- trick SNMP failures to empty
  responses.

- The multisession.initialize() method added to facilitate class instances
  reuse.

- In async_session.send_request(), the 'type' argument moved to the last
  position of the argument list and assigned the default value ('GETREQUEST').
  Unfortunately, this change may cause API incompatibility with the
  previous versions of PySNMP.

- The async_session.open() method introduced as a result of splitting
  apart the async_session.__init__() method. This is done to let user
  of async_session class modify class instance private variables (port,
  iface) before they take effect. This change may also cause API
  incompatibility.

- In async_session.__init__(), verify the callback_fun argument to make sure
  it's callable.

- In message.__init__(), the 'version' argument moved to the very end of
  argument list, as it is never need to be modified. This change may cause
  API incompatibility.

- In message.message() class, the 'decode_pdu' method renamed into
  'decode_snmp_pdu' for a more consistent view. This change might not
  affect API compatibility.

- In error.py, the 'BERError' class renamed into 'BEREngineError' while
  'EngineError' one renamed into 'SNMPEngineError'. This change may cause
  API incompatibility.

- In examples/*.py, the repr() builtin replaced with str() one as it looks
  more appropriate for printing.

- In message.message() class, default values for 'type', 'encoded_oids'
  and 'encoded_vals' arguments in method encode_request() removed.

- In message.message() class, default value for 'response' arguments in
  method decode_response() removed.

- Receive buffers of SNMP engines enlarged up to maximum UDP datagram
  size (65536 bytes) to accomodate possible huge Object IDs' values
  in replies.

- In multisession.retrieve(), delete the list of SNMP sessions on finish
  to save memory.

- More explanation messages added to exception class instantiations.

Tue Mar  6 18:06:56 MSK 2001

Changes to version 1.5.3
------------------------

- Example code in README fixed. Thanks to Jeff Wong and Charles Kong for
  it pointing out.

Fri Feb 23 12:28:59 MSK 2001

Changes to version 1.5.2
------------------------

- The ber.encode_length() & ber.decode_length() methods modified to allocate
  up to three extra bytes for storing the length of BER encoded data item or
  raise an exception if data item is too large (>16MB).

Sun Jan 21 13:56:41 MSK 2001

Changes to version 1.5.1
------------------------

- The pysnmp module converted into pysnmp package. This change might
  cause an incompatibility with previous PySNMP versions, as it
  affects the way how user refers to pysnmp components.

- All the PySNMP components converted to use class-based exceptions.

- Comments to files converted to module __doc__ attribute.

- The arguments to all objid.objid() methods as well as caller_fun argument
  to asynsnmp.async_session() class constructor becomes mandatory.

- Fixed a bug caused an infinit loop in msession.dispatch(), thanks to
  Case Van Horsen for tracking it down.

- The repr() function is used in examples/ scripts in place of %
  for a more consistent result types coercion.

- The documentation has been taked out of the distribution for a re-work
  to get it reflecting 1.5.x changes.

Thu Jan 11 11:42:13 MSK 2001

Changes to version 1.4.2
------------------------

- Argument verification for the most of ber.ber() methods removed,
  as it looks exessive (user must follow API specs).

- A bug is fixed in ber.decode_uptime(), thanks to Case Van Horsen for
  pointing it out.

- The pysnmp.multisession() class has been re-written. The new version
  is based on Case Van Horsen's code. Most importantly, a bug which
  may cause some agents' responses get lost is fixed. Also, the new code
  makes more efficient use of sockets.

  From the pysnmp.multisession() API perspective, the
  multisession.encoded_pairs attribute has been removed from class
  definition, as it seems to be of no use. The multisession.retrieve()
  method should be used instead.

Sat Dec 30 21:25:56 MSK 2000

Changes to version 1.4.1
------------------------

It's a major rewrite meant to remove known oddities. Unfortunately,
the API had to be changed a bit. The changes follow:

- The SNMP errors reported by remote SNMP process are now indicated
  with the single exception (pysnmp.SNMP_ERROR) while the details
  are supplied along with the exception associated value (see docs).

- Class constructor of pysnmp.session() class now accepts only a few
  arguments (agent, community). The rest of arguments (such as UDP port
  number, SNMP version etc.) are now available as the attributes of
  pysnmp.session() class instances (see docs).

- Instances of pysnmp.session() class now have the 'iface' attribute
  which carries the address of local interface SNMP engine is to bind()
  to (see docs).

- The pysnmp.bad_parameters exception has been replaced with
  pysnmp.bad_argument one as they seem to have very similar
  semantics.

- Class constructor of pysnmp.multisession() class does not accept any
  arguments. SNMP engine parameters are now avaliable as class instances 
  attributes (see the comment on pysnmp.session() class constructor above).

- The asynsnmp.async_session() class now subclasses the pysnmp.session()
  class for the purpose of inheriting the API of pysnmp.session() class.
  Consequently, the asynsnmp.async_session() class constructor now accepts
  only a few [major] parameters. The minor ones should be referred as class
  instance attributes (see docs).

- In async_session.handle_read(), when calling caller specified callback
  function, pass caller a reference to ourselves along with a reference to
  caller specific data. N.B. This leads to callback function's arguments list
  change what may cause incompatibility problem to the user of asyncsnmp()
  class!

- The pysnmp.packet() class renamed to pysnmp.message() as it better represents
  its functionality. This also may cause some incompatibilities, though, I do
  not expect great many people explicitly refer to it from their applications.

- Some comments in the code turned to objects' doc strings.

- The examples/ stuff has been re-written for a more consistent view;

- Module documentation added.

Thu Nov 16 08:49:14 MSK 2000

Changes to version 1.3.14
-------------------------

- The license of the PySNMP package changed for a [more relaxed] BSD License;

Fri Nov  3 19:20:02 MSK 2000

Changes to version 1.3.13
-------------------------

- Fixed wrong (non-tuple type) argument passed to socket.connect() method in
  session.open();

Mon Sep 11 11:47:12 MSD 2000

Changes to version 1.3.12
-------------------------

- bug fixed in IP address encapsulation method (ber.encode_ipaddr()). Thanks
  to Jarkko Torppa for pointing it out!

Fri Sep  8 11:51:34 MSD 2000

Changes to version 1.3.11
-------------------------

- the obsolete standard Python module 'rand' replaced with 'whrandom'
  in pysnmp.py for better portability. The random numbers generator is
  used for SNMP RequestID initialization. This change also enlarges the
  range of possible RequestID values from 0 to 0x7fffffff.

- contribution/ directory introduced and Cayce Ullman's PySNMP based
  SNMP agent put there as an example of possible PySNMP use;

Mon Sep  4 15:04:05 MSD 2000

Changes to version 1.3.10
-------------------------

- catch all possible SNMP related exceptions in async_session.handle_read()
  and convert them into (None, None) result as they would arrive out of
  context at that point (this is subject for further re-work);

- a syntax error fixed in ber.encode_ipaddr() thanks to Stefan Sami-Soueiha
  who pointed this out;

Fri Aug  4 09:50:37 MSD 2000

Changes to version 1.3.9
------------------------

- initialize SNMP Request-Id to a random value (by means of rand.rand())
  in pysnmp.packet class constructor. This makes sense when user doesn't re-use
  pysnmp object for subsequent SNMP queries but re-creates new pysnmp
  object for every request;

- convert possible pysnnp exceptions when decoding SNMP reply in
  async_session.handle_read() into (None, None) result as a pysnmp
  exception at that point would arrive out of context;

- do not destroy pysnmp.session object in async_session.handle_read()
  method as pysnmp.session object may be re-used;

Tue May 30 18:32:23 MSD 2000 

Changes to version 1.3.8
------------------------

- a bunch of changes to pysnmp.multisession class suggested by Case Van Horsen.
  These changes make objects of multisession class handling socket exceptions
  rather than passing them up to mother application;
- socket variable at pysnmp.py: replaced with sock as Case Van Horsen
  reported that it interferes with the socket module;

Mon Mar 20 18:48:54 MSK 2000

Changes to version 1.3.7
------------------------

- pysnmp.objid class moved to a dedicated module objid.py;
- ber.ber now superclasses objid.objid class;
- pysnmp.session.__init__() doesn't create an instance of pysnmp.objid()
  class (THIS MAY CAUSE BACKWARD INCOMPATIBILITY, please, let me know
  if you think I should maintain backward compatibility at this point
  of code);
- ber.decode_value() now attempts to decode an Object-Id type argument
  as suggested by Case Van Horsen;
- examples/*.py changed to utilize ber.decode_value() method against
  Object-ID's;
- tabs converted to spaces through all the *.py files;
- a few cosmetic changes applied to code;

Tue Jan 25 00:22:18 MSK 2000

Changes to version 1.3.6
------------------------

- the README example corrected, thanks to Carl Bray <cbray@Orchestream.com>;

Wed Jan 19 14:43:31 MSK 2000

Changes to version 1.3.5
------------------------

- the asynchronous SNMP manager class previously founded in
  examples/async_snmpget.py moved to a separate module asynsnmp.py;
- examples/async_snmpget.py now imports asynchronous SNMP manager class
  from asynsnmp.py module;

Mon Jan 17 15:50:04 MSK 2000

Changes to version 1.3.4
------------------------

- session.open() now returns the socket object it created;
- added a session.get_socket() method which returns socket object
  previously created with session.open() method;
- examples/async_snmpget.py added;

Thu Nov 25 16:42:59 MSK 1999

Changes to version 1.3.3
------------------------

- added a method which figures out if one OBJID is a prefix of another OBJID
  (this is used in table retrieval;
- example/snmptable.py added;

Sat Nov 13 23:43:08 MSK 1999

Changes to version 1.3.2
------------------------

- community argument of examples/* tools is now obligatory;
- multisession example of snmpget tool converted to snmpbulk tool;

Wed Nov 10 18:06:34 MSK 1999

Changes to version 1.3.1
------------------------

- a couple of bugfixes for BER [en,de]coders reported by 
  Steve Cochran <steve@more.net> commited to the distribution;

Thu Oct 28 17:40:09 MSD 1999

Changes to version 1.3
----------------------

- example/snmpset.py added;

Sun Oct 17 17:42:31 MSD 1999

Changes to version 1.2
----------------------

- examples/* tools now support command line arguments;
- order of the arguments of session.__init__() and multisession.submit_request()
  changed to better use defaults;
- order of the arguments of session.decode_response() changed, response type
  may now be ommited;

Sat Oct 16 19:19:00 MSD 1999

Changes to version 1.1
----------------------

- more checks against inconsistent arguments passed to various methods added;
- SMTP request type can now be passed to the packet constructing methods;
- more comments added to the code;
- a Object ID's convertion class (pysnmp.objid) added;
- examples/* updated (snmpwalk.py added);
- a few significant bugs fixed;