-
Notifications
You must be signed in to change notification settings - Fork 10
/
CHANGES
662 lines (613 loc) · 31.8 KB
/
CHANGES
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
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
Revision 4.2.3
--------------
- SECURITY FIX: USM subsystem did not verify securityLevel of a request
to an authoritative SNMP engineinbound against auth/priv protocols
configured for the user in question. That allowed unauthenticated/unciphered
access to pysnmp-based Agent even if USM user is configured to provide one.
- Oneliner CommandGenerator now supports optional keyword args lookupNames,
lookupValues that enable response OID / value looked up at MIB and reported
as a MibVariable container object carrying relevant MIB info.
- Oneliner CommandGenerator now supports symbolic MIB object names to be
passed within a MibVariable container object which would do a deferred
MIB lookup for name resolution. This is a new and preferred API which
obsoletes the tuple-based one (it is still suppored though).
- Oneliner CommandGenerator's class attributes lexicographicMode, maxRows
and ignoreNonIncreasingOid moved to optional keyword args of nextGen()
and bulkGen() methods.
- IPv6/UDP and Local Domain Socket transport interfaces added to the
oneliner API.
- Mib Instrumentation subsystem re-worked to replace excessive
MibNode's smiCreate()/smiWrite()/smiDestroy() methods with
MibScalarInstance's getValue()/setValue()
- MibTree.readTest[Get]Next() reworked to be called uniformely so
user could tap on these methods at any level of the MIB tree.
- MibTableColumn.getNextNodeWithValue() unpublished API method obsoleted
and removed for clarity.
- Hex dumps of binary parts of the protocol added to ease system
operations analysis.
- SnmpEngineId autogeneration does not call DNS resolver but uses
local hostname not to depend upon local IP availability and performance.
- Example apps reworked, additional SNMPv3 auth/priv protocols and transports
added.
- Package version is now available as __init__.__version__ and it is
in-sync with distutils.
- Package meta-information updated.
- The __init__.py's made non-empty (rumors are that they may be optimized
out by package managers).
- Multiple fixes to UNIX domain socket transport to make it fully
operational again.
- Use sysUpTime value whenever it is included in Notification PDU, otheriwese
resort to SNMP engine uptime reading.
- SNMPv2c Message is now defined in rfc1901.py what matches standard
definition.
- Types defined within SNMPv1/v2c data structures (rfc1157.py/rfc1905.py)
moved to module scope to become accessible by wrapper routines
(v1.py/v2c.py). This is used for setting strictly typed default values
to corresponding SNMP data structures.
- The obsolete and unpublished MibInstrumController.readVarsFast() method
removed for API clarity.
- MibBuilder now distinguishes case of MIB modules filenames even if
underlying OS does not.
- LCD configuration caching is implemented at pysnmp.entity.rfc3413.config
that improves performance of repetitive calls by 10% and might hugely
improve NotificationOriginator's performance when working on a large
number of targets.
- A caching maps implemented at rfc2576 subsystem to speed-up communityName
to/from securityName resolution. The also makes transport tags processing
better compliant to the standard.
- Community and Transport tags processing changed at the oneliner interface
to make the whole mechanism more compliant with the standard. Most
importantly, it is now possible to tag authentication and transport
information separately.
- The NoSuchInstanceError exception class is no more inherits from
NoSuchObjectError to make class hierarchy closer to SNMP specification
which states that these errors are separate and independent.
- The Next & BulkCommandGenerator's split onto single-run and iterative
impementations. The former just process a single interaction and complete
while the latter run as many interactions as user callback function
indicates to.
- The pysnmp.entity.rfc3413.mibvar module is now obsolete by
pysnmp.entity.rfc3413.oneliner.mibvar featuring basically the same
features but within a stateful, dedicated object.
- Auth & target configuration container classes moved to their separate
modules at oneliner API.
- The notificationType parameter of AsynNotificationOriginator.sendNotification
made defaulted to reflect its optional nature.
- Built-in debugger now supports negating debugging categories.
- Fix to CommandGenerator's SNMPv3 engine autodiscovery algorithm
when retryCount is administratively set to 0.
- Fix to Notification Originator to make it communicating a single
sendPduHandle to an application even when multiple INFORMs are triggered
and processed by a single call by way of transport tagging feature.
- Fix to rfc2576:processIncomingMessage() to take SecurityModel into account
when lookup up SecurityName by CommunityName. This allows mixed SNMPv1/v2c
communication with the same target.
- Fix to internal MessageProcessing and SecurityModel timers so they become
dependant on system timer resolution.
- Fix to v1.PDUAPI.setDefaults() method that used to set wrongly typed
time-stamp component.
- Fix to IPv6 address handling to prevent system from crashing whilst
running Python3.
- Fix to SNMPv2 exception objects translation into SNMPv1 PDU and NEXT
OIDs calculation.
- Fix to MibTree class to properly report noSuchObject & noSuchInstance
SNMP special values.
- Fix to libsmi2pysnmp tool to make it working again in Python < 2.7
- Fix to exception handling at decodeMessageVersion() caller to prevent
ASN.1 parsing errors crashing the whole app.
- Fix to GenericTrap type processing at rfc2576:v1Tov2c() which used to
crash the whole SNMP engine.
- Fix to [possibly uninizilaized] pyasn1 objects printouts at
MibInstrumController.__indexMib()
- Dedicated 'withmib' example set is obsolete and removed.
- Another SNMP proxy example app added (1to3.py).
- Typo fix to snmpInASNParseErrs MIB instance object.
- Typo fix to errind.EngineIdMismatch class and its instance.
Revision 4.2.2
--------------
- Oneliner CommandGenerator can now limit the number of SNMP table
rows returned by nextCmd()/bulkCmd() methods.
- Oneliner CommunityData configuration object can now be initialized
with community name only, security name will be chosen automatically.
- Oneliner LCD configuration routines reworked towards clarity. The
side-effect of this change is that repetitive oneliner call with the same
securityName and different configuration options will only honor
the first settings. Previous implementation would override older settings.
- Transport dispatcher now provides its own time expressed in
fractions of second. SNMP engine uses this notion of time for
handling requests timeout to make packet flow time bound
to async I/O core operations rather than to real time.
- The libsmi2pysnmp tool improved to handle incomplete SMI v1->v2
conversion performed by smidump. The remaining core SMIv1 modules
excluded from the core MIB set.
- The pyasn1 constraint and enumeration objects put into ASN1-*
MIB modules what appears to be more in-line with SMI. Existing
MIB modules as well as libsmi2pysnmp tool corrected accordingly.
- SMIv1 MIB modules removed from the distributionm as the whole system
if SMIv2-based.
- The MibBuilder.importSymbols() now takes optional kwargs and
push them into MIB modules globals(). This is to facilitate
passing user infomation, such as DB connection handler, to MIB
module namespace so it could be used by ManagedObjects implementations.
- When running on Python3, SMI will re-raise exceptions with the original
traceback for easier diagnostics.
- Out of PYTHONPATH MIB paths now supported.
- Added pyasn1 decoder failures diagnistics in debug mode.
- Fix to non-MT-safe class attributes at SNMPv3 MP & SEC modules.
- Fix to ContextName handling in bytes form whilst running Python3. Data
mismatch error would return otherwise.
- Fix to SNMPv3 MP peer engine ID discovery not to learn and use
user-specified ContextEngineId.
- Fix to socket.error processing at Py3 on Windows.
- Fix to oneliner GETNEXT/GETBULK implementation to properly support
ignoreNonIncreasingOIDs option.
- Fix to setEndOfMibError()/setNoSuchInstanceError() at v1 PDU not to
loose errorIndex.
- Fix to api.v2c.getVarBindTable() to ignore possible non-rectangular GETBULK
response tables.
- Fix to oneliner getnext/getbulk response table rectangulation procedure
to gracefully handle an empty column condition.
- Fix to legacy MibBuilder.getMibPath() to prevent it from missing
.egg-based components in path.
- Fix to oneliner configuration routine that used to implicitly
tag SNMPv1/v2c auth and transport LCD rows what resulted in
huge delays when processing incoming messages with large number
of peers configured.
- Fix to UDP6 transport handling at rfc2576 security module.
- Fix to SnmpEngineID value autogeneration (used to fail on Mac).
- SNMPv2-SMI.ObjectType.__repr__() fixed to do a repr() on its components.
- All SNMPv2-SMI.MibNode-based objects, once exported to a mibBuilder, will
carry an embedded label symbol.
- Exlicit repr() calls replaced with '%r'
- Fix to error processing at GETNEXT & GETBULK apps response handlers.
- Fix to libsmi2pysnmp to make it supporting long (256+) list of function
params.
- Fix to libsmi2pysnmp to support inheritance of MIB types.
Revision 4.2.1
--------------
- Support string OIDs at one-liner API.
- Code quality of libsmi2pysnmp tool improved, MIBs re-built.
- SNMP-PROXY-MIB & SNMP-USER-BASED-SM-3DES-MIB added
- v1arch bulkgen.py example added
- Major overhawl for Python 2.4 -- 3.2 compatibility:
+ get rid of old-style types
+ drop string module usage
+ switch to rich comparation
+ drop explicit long integer type use
+ map()/filter() replaced with list comprehension
+ apply() replaced with */**args
+ dictionary operations made 2K/3K compatible
+ division operator made 2K/3K compatible
+ sorting function now operates on key
+ iterators returned by some funcs in py3k converted to lists
+ exception syntax made 2K/3K compatible
+ tuple function arguments resolved to scalars to become py3k compatible
+ BER octetstream is now of type bytes (Py3k) or still string (Py2k)
Revision 4.1.16d
----------------
- Fix to SNMPv1 Trap PDU agentAddress setter shortcut method.
Revision 4.1.16c
----------------
- Missing module import fixed in privacy subsystem
Revision 4.1.16b
----------------
- Oneliner CommandGenerator can now optionally ignore non-increasing OIDs.
- Default CommandResponder now skips non-compliant (Counter64) values
when responding to a v1 Manager.
- Fix to state information handling at CommandResponder app.
- Fix to Twisted reactor shutdown condition.
- Fix to distutils dependencies syntax.
Revision 4.1.16a
----------------
- Extended Security Options (3DESEDE, AES192, AES256) privacy
protocols implemented.
- The error-indication codes moved from literals to objects for reliability
and clarity
- Fix to v1.TrapPDUAPI.getVarBinds() to address PDU component at the right
position.
- Fix to rfc1902.Bits initialization from named bits sequence.
- Fix to MIB builder by-extension module filtering code to cope with .pyw
files.
- Internal caches structure improved.
- Sync versions of oneliner apps split off async implementation for clarity.
- Randomize initial in various numeric sequences.
- MsgAndPduDsp expectResponse parameters passing reworked.
- GetNext/GetBulk response processing logic moved to getNextVarBinds()
- Changes towards performance improvement:
+ all dict.has_key() & dict.get() invocations replaced with modern syntax
(this breaks compatibility with Python 2.1 and older).
+ introduce the MibInstrumControlle.readVarsFast() method (which skips
the "testing" phase of MIB value readin) for dealing with internal
configuration (LCD).
+ default debug.logger is now just a zero value instead of an object
what saves big on frequent calls
+ SNMPv2-SMI columnar indices <-> index values convertion code optimized.
+ pre-compute and re-use some of ASN.1 structures.
+ avoid setting PDU defaults to save on unnecessary initialization.
+ skip ASN.1 types verification where possible.
+ at oneliner Command Generator, avoid looking up pure OID arguments
at MIB as it's pointless but takes time.
+ cache MIB columnar objects instance ID <-> symbolic index representation
mapping
Revision 4.1.15a
----------------
- SNMP Proxy example added.
- End-of-MIB condition detection reworked what caused backward
incompatibility at v1arch GETNEXT API. Previous pysnmp versions
used value = None in var-binds as returned by getVarBindTable()
API method. This version uses rfc1905 exception values (v2c/v3)
or pyasn1 Null (v1).
Built-in GETNEXT/GETBULK apps now do not require user to track
end-of-mib conditions anymore -- this is now done automatically.
- CommandResponder API now supports async mode of operation.
- SNMP exception values now exported from rfc1905 module, and made
pretty printable.
- Lexicographic walking mode is now supported at oneliner CommandGenerator.
- ContextEngineId&ContextName parameters passing implemented at
v3arch oneliner API.
- Multiple instances of the same transport domain now supported.
- Initial snmpEngineId value generation improved not to accidentally
collide within an administrative domain.
- MibTableColumn instances now build value-to-column-instance map
to speedup by-value search.
- SNMPv2-CONF::AgentCapabilities macro implemented.
- The libsmi2pysnmp tool handles some more MACROs.
- Void access control module implemented to let apps disabling [default] VACM.
- Allow standard SNMP apps to choose access control method to use.
- Twisted-based CommandResponder example added.
- Fix/rework of Twisted GETNEXT/BULK CommandGenerator callback API to
make it simpler and uniform with other CommandGenerators
- Fix to SNMPv3 security module to store peer SNMP engine timeline
only if taken from an authenticated message. Prior to this fix
SNMP engine was not been protected from spoofing.
- Fix to $SMIPATH initialization at build-pysnmp-mib.
- Fix to maxSizeResponseScopedPDU calculation.
- Fix to Next/Bulk CommandGenerators to catch a non-increasing OID
error condition (what prevents looping).
- Fix to Opaque value tagging at rfc1155.Opaque type.
- Fix to handle (fail gracefully) zero-length user password.
- Fix to SNMP error propagation at Twisted driver (SF tracker ID #3054505).
- Fix to Agent-role snmpEngineId discovery procedure that allows
authenticated ReportPDU generation.
- Fix to SNMPv1 PDU handling at CommandResponder & NotificationReceiver
apps.
- Fix to CommandResponder app to skip Counter64 SMI values when responding
to SNMPv1 Manager.
- Fix to protocol translator code (rfc2576) to handle Counter64 type
in v2c-to-v1 PDU translation.
- Fix to non-response var-binds translation in rfc2576.v2ToV1().
- Fix to wrong exceptions used in pysnmp/entity modules.
- Fix to noauth/nopriv security module so that it would not crash SNMP
engine if called accidentally.
- Fix to CommandResponder not to return out-of-range errorIndex along
with genErr
- Fix to GETBULK CommandResponder to do a by-column MIB walk, not by-raw.
- Fix to getVarBindTable() API function logic.
- Fix to example Manager scripts to use errorIndex when available.
- Fix to dummy encryptData()/decryptData() API
- Fix to oneliner GETBULK table collection code to make it stripping
uneven rows off table tail.
Revision 4.1.14a
----------------
- Fix to maxSizeResponseScopedPDU calculation at USM security module: now
more precise and robust against screwed values on input.
- Fix to MIB loading logic that used to load same-name modules at
disticts search paths on each loadModules() call.
- Fix to AsynsockDispatcher.runDispatcher() to make use of optional
non-default select() timeout value.
- AbstractTransportDispatcher now allows user application registering
multiple timer callbacks each with dedicated call period.
- Asynsock mainloop default idle period reduced to 0.5 sec for better
timer resolution.
- Fix to SNMPv1->SNMPv2c error status handling at proxy module. This
defect may have caused an infinite loop on a multiple var-bind
SNMPv1 GetNext operation.
- Fix to contextName processing at config.addV1System -- typo rendered
passed contextName not committed into LCD.
- Fix to unknown ContextName exception handling at CommandResponder App.
- config.addVacmUser() now accepts an optional contextName what makes
it usable for configuring multiple contextName-bound bases of Managed
Objects to SnmpEngine.
- MP pending states cache management re-worked so that SNMP engine will
now handle an unlimited number of pending request/responses.
- Fix to SNMP discovery procedure: include ContentName in SNMP discovery
messaging.
- Many fixes to AES crypto code that makes it actually working.
- Fix to SNMPv2-SMI createUndo operations.
- Fix to INFORM sending error handling at oneliner.
- Fix to mismatched response PDU handling at CommandGenerator application.
- Debug category 'app' (for Application) added to facilitate
Standard SNMP Applications debugging.
- The retryCount semantic of CommandGenerator application changed to include
sole retries and do not include initial request. Thus, retryCount=1 will
now send up to two packets, not just one as it used to be.
- Debugging printout now escapes non-printable characters.
Revision 4.1.13a
----------------
- UDP over IPv6 transport implemented.
- Fix to MIB tree walking code that used to fail on table columns where
indices have identical leading parts.
- SNMPv1/v2c snmpCommunityTransportTag-based imcoming message filtering
implemented (rfc2576).
Revision 4.1.12a
----------------
- API versioning retired (pysnmp.v4 -> pysnmp).
- MIB loading mechanics re-designed to allow ZIP import.
- MIB loader supports code objects (py[co])
- Installer now uses setuptools for package management whenever available.
- The libsmi2pysnmp tool improved to build constraints of more than
256 items (Python has a limit on the number of function params).
- Missing SNMPTrap PDU API implemented at proto.api.v2c, RFC2576 proxy
code reworked.
- Fix to sysUpTime OID at SNMPv2 TRAP PDU.
Revision 4.1.11a
----------------
- Twisted integration implemented.
- Attempt to use hashlib whenever available.
- Fix to oneliner Manager code on < Python 2.4.
- Let NotificationReceiver and CommandResponder Apps browsing request details
(transport information at the moment) at SNMP engine.
- Fix to config.addV1System() to allow multiple systems to co-exist in LCD.
- Fix to wrongly succeeding user-parameters-by-community-name searching code
in rfc2576 processIncomingMsg() method.
- Do sanity checking on PYSNMP_MODULE_ID, Groups and Notifications in
libsmi2pysnmp (SF bug #2122489).
- Fix to oneliner Notification Originator that sometimes used to send multiple
requests at once.
- Oneliners LCD names generation code reworked to avoid accidental clashes.
- Fix and re-work of sysUpTime value management in LCD.
- Fix to pending inform request data caching in mpmod/rfc2576.py -- previous
code led to cache data corruption on multple outstanding requests.
- In SMI configuration wrapper functions, catch access to non-configured
entries and raise an exception.
- Allow multuple callback timer functions in all transport dispatchers.
- Fix to libsmi2pysnmp code to preserve more underscored object names and
to guess the right type between indistinguishable ObjectGroup &
NotificationGroup
- Fix to MibScalarInstance value setting logic - previous code failed
when modifying the same OID multiple times within a single SET operation.
- Minor usability improvements to tools/build-pysnmp-mib.
- Made MIB objects unexport feature operational.
Revision 4.1.10a
----------------
- Internal MIB indexing method __indexMib() unmangled to facilitate
setting up mutex there for sharing MIB stuff between threads.
- Fixed broken IpAddress value handling in SET operation.
- Broken MibBuilder.unloadModules() method now works.
- Use getLabel() SMI object method when building MIB tree (in builder.py)
in addition to direct attribute access for clearer object protocol.
- The MIB building tools updated to match significantly improved
smidump tool (libsmi version > 0.4.5).
- Made libsmi2pysnmp tool optionally building MIB text fields into pysnmp
MIB code (enabled by default) and MibBuilder conditionally loading them
up (disabled by default).
- SnmpEngine and MsgAndPduDispatcher constructors now optionally
take msgAndPduDspr and mibInstrumController class instances
respectively to facilitate these objects sharing within a process.
- Unique integers, for various parts of the system, are now generated
by a nextid.py module. This fixes possible issues with duplicate
request IDs and handlers.
- Built-in MIBs re-generated to include text fields.
Revision 4.1.9a
---------------
- UNSTABLE ALPHA RELEASE.
- At onliner CommandGenerator, close transport on destruction to
prevent socket leak. Implicit async transports registration at
default asyncore's socket map has been disabled to avoid side
effects.
- Fix to rfc2576.v1ToV2c() PDU converter to perform noSuchName error code
translation.
- Fixes to Notification PDU convertion code at rfc2576 in part of
snmpTrapOID handling.
- Fix to nonRepeaters object use as sequence slicer (must be int) at
cmdrsp.CommandResponderApplication
- Make AsynsockDispatcher using its own socket map by default for
threading safety. This will break asyncore apps that rely on pysnmp
sharing the same socket map with them. A solution would be to either
set asyncore map to pysnmp (AsynsockDispatcher.setSocketMap()) or pass
pysnmp map (AsynsockDispatcher.getSocketMap()) to asyncore.
- Fix to response timeout roundup bug at CommandGenerator and
NotificationOriginator code.
- Oneline configuration classes made hashable to prevent memory leaks
when committing them into CommandGenerator/NotificationOriginator
internal repository.
- Security information is now released properly in all MP modules.
This might fix a significant memory leak.
- Typo fix to rfc3411 confirmed class PDU members.
Revision 4.1.8a
---------------
- UNSTABLE ALPHA RELEASE.
- SMI/dispatcher timeout convertion multiplier is actually 100 (1/100 sec)
rather than 1/1000. This fix affects timeouts specified through SMI.
- __repr__() implemented for UdpTransportTarget, CommunityData, UsmUserData
in oneliner module.
- Automatically initialize table index values on table management
operations (SF bug ID #1671989).
- Fix to carrier code: ignore BADFD socket error as it may happen upon
FD closure on n-1 select() event.
- Fix to MibBuilder.setMibPath() to preserve previously loaded modules
intact. Otherwise loadModules() called after setMibPath() might fail
with 'MIB file not found in search path' exception.
- Fix to oneliner classes that now invoke unconfiguration methods on
destruction. This might have caused memory leaks.
- Automatically initialize SNMP-USER-BASED-SM-MIB::UsmUserSecurityName
columnar object instance on creation, as stated in DESCRIPTION (SF
tracker ID #1620392).
- Fix to USM timeframe arithmetics (SF bug #1649032).
- VACM shortcuts merged into universal add/delVacmUser() to let notifications
and requests to co-exist for the same user.
- At oneliners, build LCD tables keys from a hashed mix of input parameters
to make sure these automatic entries won't interfere or exceed constraints
on keys values.
- Made use of notificationType parameter of the sendNotification method
in NotificationOriginator applications. This parameter used to be
ignored in the past. Note, that previously used (and ignored) syntax
has been changed in an incompatible way.
- Allow plain Python values in setCmd() and sendNotification()
methods in CommandGenerator and NotificationOriginator applications
respectively.
- Multi-target oneliner API-based example script added.
- Ignore more socket errors in datagram-type async socket code.
- AES cipher now supported (rfc3826).
- Fix to messed up tagIDs of noSuchInstance and noSuchObject types.
- SET Command Responder fixed to obscure access to non-existing variables
by returning notWritable error (SF bug #1764839).
- AsynsockDispatcher.setSocketMap() method added to facilitate pysnmp
transport integration into third-party asyncore-based applications.
- Fix to errorIndex generation at CommandResponder application, the value
should be a one-based.
Revision 4.1.7a
---------------
- UNSTABLE ALPHA RELEASE.
- Low-level debugging facility implemented.
- Support UdpTransportTarget timeout and retries parameters in oneliner API.
- Fix to snmpTrapOID construction at ...proxy.rfc2576.v1ToV2()
function.
- Fix to MibViewController.getNodeName() to take MIB module name
into account (SF bug #1505847).
- Do explicit check for Counter32,Unsigned32,TimeTicks,Counter64 value types
in MibTableRow index convertion and in TextualConvention.prettyPrint()
methods (SF bug #1506341). Handle Bits in indices as RFC2578 suggests.
- Apply read-create column status to libsmi2pysnmp-generated code
whenever MIB text specifies that (SF bug #1508955).
- Honor and apply DISPLAY-HINT specification when building TextualConvention
class at libsmi2pysnmp.
- Managed Objects Instances files (smi/mibs/instances/) are now
double-underscore prefixed to make them imported explicitly by these
prefixed names. They used to be imported as a side-effect of
Managed Objects files import what is way too hackerish.
- The libsmi2pysnmp now supports future libsmi bugfix that would generate
"ranges" subtree along with the legacy and ambiguous "range" one.
- SMI support for fixed-length string indices implemented (SF bug #1584799,
#1653908).
- Managed Object Instances may now have smiRead, smiWrite, smiCreate methods
to support specific value mangling. These methods, if present, would be
invoked from SNMP [Agent] core instead of conventional clone() method.
The reason is to separate trivial value duplication from specific
Instance value mangling that may have Agent-specific side effects
(such as RowStatus).
- MIB table row destruction now works (SF bug #1555010).
- LCD unconfiguration functions for oneliners implemented (SF bug #1635270).
- unloadModules() and unexportSymbols() implemented at MibBuilder
- Notification type PDU proxy code fixed to produce symmetrical
convertion.
- Various SNMP engine-internal caches expiration implemented.
- SMI-level access control now takes effect only if AC object is
passed to MIB instrumentation API.
- LCD management code now uses generic MIB instrumentation features.
- Fix to oneliner manager code to have individual UdpSocketTransport
instance per each SnmpEngine. Multithreaded apps might fail otherwise.
(SF bug ID #1586420).
- Exclude the PYSNMP_MODULE_ID symbol from MIB view index, as it may get
resolved into OID label instead of actual MIB object name.
- Memory leak fixed in indices.OidOrderedDict implementation.
- Fix to VACM shortcuts to let notifications and requests to co-exist
for the same user otherwise.
- Fix to ...oneliner.cmdgen.UsmUserData to support non-default ciphers.
- USM now uses local notion of snmpEngineBoots/Time when authoritative
and cached estimate otherwise. Also, a security fix applied to to USM
time-window verification (SF bug #1649032).
- Fix to notification objects resolution code at
NotificationOriginator.sendNotification()
- Do not raise securityLevel for USM error reports that lacks user
information, as these reports could never be ciphered (SF bug #1624720).
- Non-default BULK PDU params now actually applied.
- SnmpEngineID default value generation algorithmic function changed
to allow multiple SNMP engines running on the same host.
- Documentation updated.
- A handful of minor fixes applied (SourceForge tracker IDs #1537592,
#1537600, #1537659, #1548208, #1560939, #1563715, #1575697, #1599220,
#1615077, #1615365, #1616579).
Revision 4.1.6a
---------------
- UNSTABLE ALPHA RELEASE.
- pysnmpUsmSecretAuthKey and pysnmpUsmSecretPrivKey length increased
up to 256 octets. There seems no limit on this in RFC, though.
- A workaround for probably broken Agents: SNMPv3 Manager code defaults
ContextEngineId to SecurityEngineId whenever ContextEngineId is not
reported by authoritative SNMP engine on discovery.
- Use empty PDU in engine-discovery report at mpmod/rfc3412.py.
- MibBuilder.loadModules() now fails on missing MIB files.
- MibBuilder.exportSymbols() now accepts unnamed objects (likely Managed
Objects Instances)
- SNMPv2-SMI.MibScalarInstance objects now support create*/destroy*
Management Instrumentation methods to pass Columnar Object creation and
removal events. MibTableColumn class invoke these methods accordingly.
- Fix to AsynNotificationOriginator.asyncSendNotification() callback
formal parameters
- Initial VACM configuration implemented according to rfc3415 Appendix 1
- tools/buildmibs.sh split-up and re-implemented as tools/build-pysnmp-mib
and pysnmp-mibs/tools/rebuild-pysnmp-mibs for better usability. These
and libsmi2pysnmp scripts made installable.
- Types/Notifications/Groups exportSymbols() call chunking implemented
in tools/libsmi2pysnmp
- Initial values specified to pyasn1 types to comply with latest pyasn1 API.
- Documentation improved
- Minor fixes towards Python 1.5 compatibility
Revision 4.1.5a
---------------
- UNSTABLE ALPHA RELEASE.
- Multi-lingual SNMP Trap/Inform Applications completed; examples added
- SMI model re-designed to make a clear separation between
Managed Objects and their specification (AKA Agent and Manager side)
- SNMP SET Application support completed
- Minor, though backward incompatible, changes to one-liner API
- Many bugfixes
Revision 4.1.4a
---------------
- UNSTABLE ALPHA RELEASE.
- SHA-based authentication fixed and privacy implemented
- ...oneliner.cmdgen.UsmUserData constructor now takes
authProtocol and privProtocol parameters in a backward incompatible
manner.
Revision 4.1.3a
---------------
- UNSTABLE ALPHA RELEASE.
- rfc3413 applications API changes (related to callback function
behaviour).
- TransportDispatcher now provides "jobs" interface to clients
for better control of dispatcher's execution.
- Many minor fixes.
Revision 4.1.2a
---------------
- UNSTABLE ALPHA RELEASE.
- Top-level application classes renamed into longer, self descripting names
for clarity.
- CommandResponder & NotificationOriginator applications now uses
stand-alone SnmpContext for application registration.
- Many minor fixes (inspired by testing on WinXP)
Revision 4.1.1a
---------------
- UNSTABLE ALPHA RELEASE.
- SNMPv3 code first published
- SNMP engine and applications implemented on library level
- Major re-design towards SNMPv3-style API.
Release 4.0.2a
--------------
- Adopted to slightly changed asyncore API (as shipped with python 2,4)
Release 4.0.1a
--------------
- Minor bug/typo fixes, mostly in example/ scripts.
Release 4.0.0a
--------------
- UNSTABLE EARLY ALPHA RELEASE.
- Major re-design and re-implementation.
- Rudimental API versioning implemented to let incompatible package
branches to co-exist within the same Python installation.
- SMI framework designed and implemented. This framework provides
1) various access to MIB data 2) a way to implement custom MIB
instrumentation objects. There's also a tool for building SMI classes
from libsmi(3) output (smidump -f python).
- ASN.1 subtyping machinery implemented. Now dynamic ASN.1 instances
subtyping and quering becomes available. Previously, this has been done
through Python classes inheritance what proved to be a wrong concept.
- ASN.1 codecs framework re-designed and re-implemented aimed at a more
consistent design and better performance. Highlights include abstract
codec interface and serialized data caching (at encoder).
- Asn1Item constraints machinery re-implemented based on Mike C. Fletcher's
design and code. Now various constrains are implemented as stand-alone
objects serving interested Asn1Object derivatives through some abstract
protocol (that's probably the Decorator design pattern).
- ASN.1 tagging facility re-implemented along the client-server design
pattern. Besides this seems to be a more appropriate design, it allows
an easier way for dynamic subtyping.