1347 lines
68 KiB
Plaintext
1347 lines
68 KiB
Plaintext
|
|
Revision 5.0.0, released 2018-10-??
|
|
-----------------------------------
|
|
|
|
- SNMPv3 crypto operations that require external dependencies
|
|
made dependent on the optional external
|
|
package -- pysnmpcrypto.
|
|
|
|
- By switching to pysnmpcrypto, pysnmp effectively migrates from
|
|
PyCryptodomex to pyca/cryptography whenever available on the
|
|
platform.
|
|
|
|
- Many really old backward-compatibility code snippets removed.
|
|
Most importantly:
|
|
|
|
* `pysnmp.entity.rfc3413.oneliner` and everything related
|
|
to the (non-standard) UNIX domain socket transport is gone
|
|
* `pysnmp.carrier.asynsock` backward-compatible wrapper over
|
|
`pysnmp.carrier.asyncore` is gone
|
|
|
|
- The MIB instrumentation API overhauled in backward incompatible
|
|
way:
|
|
|
|
* MIB instrumentation methods signatures simplified to accept
|
|
just var-binds (as var-arg), the rest of the parameters packed
|
|
into opaque kwargs
|
|
|
|
* The `readVars`, `readNextVars` and `writeVars` methods of MIB
|
|
instrumentation controller return immediately and deliver their
|
|
results via a call back.
|
|
|
|
* CommandResponder application passes `snmpEngine` and optionally
|
|
user-supplied `cbCtx` object throughout the MIB instrumentation
|
|
methods. The goal is to let MIB objects access/modify whatever
|
|
custom Python objects they need while being called back.
|
|
|
|
* CommandResponder refactored to facilitate asynchronous
|
|
MIB instrumentation routines.
|
|
|
|
- The high-level API (`hlapi`) extended to cover lightweight SNMP v1arch
|
|
in hope to ease the use of packet-level SNMP API.
|
|
|
|
By way of introducing v1arch hlapi, the sub-packages layout changed
|
|
so that `pysnmp.hlapi` is moved to `pysnmp.hlapi.v3arch` and the new
|
|
v1arch layer is introduced in `pysnmp.hlapi.v1arch`. This change does
|
|
not break backward compatibility as `pysnmp.hlapi` still defaults to
|
|
`pysnmp.hlapi.v3arch`.
|
|
|
|
The `pysnmp.hlapi.v1arch` is designed to be as much similar in use
|
|
to `pysnmp.hlapi.v3arch`, but with high-performance in mind. One of
|
|
the consequences of this higher performance focus is that various
|
|
automation around building well-formed SNMP messages is and mediating
|
|
differences between SNMP versions is not present in this new `v1arch`
|
|
layer.
|
|
|
|
- The signature of the hlapi `.sendNotification()` call has changed
|
|
to accept `*varBinds` instead of a sequence of `varBinds`. The rationale
|
|
is to unify this method call with similar methods of CommandGenerator.
|
|
This change should not compromise backward compatibility with pysnmp 4.
|
|
|
|
Revision 4.4.7, released 2018-11-XX
|
|
-----------------------------------
|
|
|
|
- Exposed ASN.1 `Null` type through `rfc1902` module for convenience.
|
|
- Use `compile()` before `exec`'ing MIB modules to attach filename to
|
|
the stack frames (ultimately shown in traceback/debugger)
|
|
- Fixed hlapi/v3arch transport target caching to ensure transport targets
|
|
are different even if just timeout/retries options differ
|
|
- Fixed hlapi LCD configurator to include `contextName`. Prior to this fix
|
|
sending SNMPv3 TRAP with non-default `contextName` would fail.
|
|
|
|
Revision 4.4.6, released 2018-09-13
|
|
-----------------------------------
|
|
|
|
- Improved package build and dependency tracking
|
|
- Fixed missing LICENSE from the tarball distribution
|
|
- Fixed `CommandGeneratorLcdConfigurator.unconfigure()` to fully clean up
|
|
internal caches, otherwise repetitive attempts to configure the target
|
|
would fail.
|
|
- Fix to tolerate possible duplicate enumerations in `Bits` and `Integer`
|
|
SMI types.
|
|
- Fix to tolerate non-initialised entries in SNMP community table. Once a
|
|
bad entry sneaked into the SNMP community table, all the subsequent
|
|
SNMP v1/v2c operations failed. The fix ignores incomplete SNMP community
|
|
table entries in the course of building indices.
|
|
|
|
Revision 4.4.5, released 2018-08-05
|
|
-----------------------------------
|
|
|
|
- Added PySnmpError.cause attribute holding parent exception tuple
|
|
- Fixed zero SNMPv3 boots/time values put in SNMPv3 TRAP messages
|
|
- Fixed broken InetAddressType rendering caused by a pyasn1 regression
|
|
- Fixed typo in RFC1158 module
|
|
- Fixed possible infinite loop in GETBULK response PDU builder
|
|
- Fixed memory leak in the `config.delContext()` VACM management harness
|
|
- Fixed `Bits` class initialization when enumeration values are given
|
|
- Fixed crash caused by incoming SNMPv3 message requesting SNMPv1/v2c
|
|
security model
|
|
- Fixed out-of-scope OIDs leaking at the end of SNMP table at hlapi
|
|
`nextCmd` and `bulkCmd` calls when `lexicographicMode = False`
|
|
|
|
Revision 4.4.4, released 2018-01-03
|
|
-----------------------------------
|
|
|
|
- Copyright notice extended to the year 2018
|
|
- Fixed short local key expansion at 3DES key localization
|
|
implementation.
|
|
|
|
Revision 4.4.3, released 2017-12-22
|
|
-----------------------------------
|
|
|
|
- Migrated references from SourceForge
|
|
- Added missing SHA2 support for Blumenthal key localization
|
|
- Fixed named bits handling at rfc1902.Bits
|
|
- Fixed missing SmiError exception class at pysnmp.proto.rfc1155
|
|
- Fixed SNMP v1->v2c PDU proxy -- error-status & error-index fields
|
|
from v1 PDU get copied over to v2c PDU in addition to the exception
|
|
sentinels being set
|
|
|
|
Revision 4.4.2, released 2017-11-11
|
|
-----------------------------------
|
|
|
|
- The pysnmp version being used gets exposed to the MIB modules
|
|
via the `MibBuilder` instance
|
|
- The .setObjects() method of the SMI types now accepts
|
|
`append=False` parameter to let the caller adding more
|
|
than 255 elements over the course of multiple calls
|
|
- Added support for some more missing fields of SMIv2 MACRO types
|
|
- Example scripts rearranged in a way that IPv6 requirement is
|
|
clearly encoded in the script's name
|
|
- Fixed SNMPv2-SMI.NotificationType to expose .set/getReference()
|
|
instead of .set/getRevision() which should not be there in the
|
|
first place
|
|
- Fixed non-implied-OID encoding in SNMP table indices
|
|
- Fixed inconsistent SNMPv3 discovery and retrying algorithm
|
|
|
|
Revision 4.4.1, released 2017-10-23
|
|
-----------------------------------
|
|
|
|
- HMAC-SHA-2 Authentication Protocols support added (RFC-7860)
|
|
- The pycryptodome dependency replaced with pycryptodomex as
|
|
it is recommended by the upstream to avoid unwanted interference
|
|
with PyCrypto package should it also be installed
|
|
- Sphinx theme changed to Alabaster in the documentation
|
|
- Minor adjustments towards pyasn1 0.4.x compatibility
|
|
- Fixed ObjectIdentifier-into-ObjectIdentity casting at
|
|
rfc1902.ObjectType MIB resolution harness
|
|
- Fixed NetworkAddress object handling in SNMP table indices
|
|
- Fixed MIB lookup by module:object.indices MIB object with
|
|
InetAddressIPv{4,6} objects being in the index
|
|
- Fixed non-translated PDU being retries at CommandGenerator what
|
|
leads to wrong PDU version being sent and even a crash on
|
|
incompatible PDU/SNMP message combination
|
|
|
|
Revision 4.3.10, released 2017-10-06
|
|
------------------------------------
|
|
|
|
- Refactored partial SNMP message decoding to make it less dependent
|
|
on unpublished pyasn1 API features.
|
|
- Fix to MibTableRow.setFromName() to keep the input parameter type when
|
|
it propagates to the return value. Before this fix
|
|
ObjectIdentity.prettyPrint() may crash when rendering malformed SNMP
|
|
table indices.
|
|
- Fixed NotificationReceiver to include SNMPv1 TRAP Message community
|
|
string into SNMPv2c/v3 TRAP PDU
|
|
- Fixed multiple bugs in SNMP table indices rendering, especially
|
|
the InetAddressIPv6 type which was severely broken.
|
|
- Fixed crashing Bits.prettyPrint() implementation
|
|
- Fixed crashing Bits.clone()/subtype() implementation
|
|
- Fixed leaking exceptions bubbling up from the asyncio and Twisted adapters
|
|
|
|
Revision 4.3.9, released 2017-07-26
|
|
-----------------------------------
|
|
|
|
- Deprecated UsmUserData initializaton parameters removed
|
|
- Adapted to pyasn1 API changes introduced by release 0.3.1
|
|
- Fix to a crash happening on inbound SNMP message having non-initialized fields
|
|
- Fix to (persistent SNMP engine ID) file writing on Windows
|
|
|
|
Revision 4.3.8, released 2017-06-15
|
|
-----------------------------------
|
|
|
|
- Security fix to the bug introduced in 4.3.6: msgAuthoritativeEngineTime
|
|
stopped changing over time and was returning the same timestamp (process
|
|
start time). This fix makes it growing as it should.
|
|
|
|
Revision 4.3.7, released 2017-05-29
|
|
-----------------------------------
|
|
|
|
* Fixed import error in legacy NotificationOriginator implementation
|
|
|
|
Revision 4.3.6, released 2017-05-28
|
|
-----------------------------------
|
|
|
|
- More instrumentation hooks added addressing security failures
|
|
auditing needs.
|
|
- SNMP table indices correlation implemented within SMI framework.
|
|
The opaque InetAddress type implemented. INET-ADDRESS-MIB included
|
|
into the distribution.
|
|
- SNMP table indices resolution logic made more robust against
|
|
malformed indices.
|
|
- Fixes to *lexicographicMode* option documentation to make it
|
|
unambiguous.
|
|
- The `ErrorIndication` object is now derived from `Exception` so
|
|
that it could be raised in exceptions.
|
|
- The `errorIndication` values produced by various parts of
|
|
SNMP engine unified to be `ErrorIndication` instances. This fixes
|
|
an issue with Twisted.
|
|
- Embedded MIB modules rebuilt with the latest pysmi adding previously
|
|
missing attributes like `status`, `description` etc.
|
|
- Fixed potential SNMP engine crash on handling incoming message
|
|
at unsupported security level
|
|
|
|
Revision 4.3.5, released 2017-03-24
|
|
-----------------------------------
|
|
|
|
- The getNext() and getBulk() calls of Twisted interface.
|
|
now support ignoreNonIncreasingOid option.
|
|
- TextualConvention is now a new-style class.
|
|
- Fix to accidentally reset error-status when building confirmed class
|
|
SNMPv1 PDU.
|
|
- Fix to possible infinite recursion in TextualConvention.prettyIn().
|
|
- Fixed crash when attempting to report unsupported request/notification
|
|
PDU back to sender.
|
|
|
|
Revision 4.3.4, released 2017-03-01
|
|
-----------------------------------
|
|
|
|
- Fix to low-level SNMP API example to accommodate changed pyasn1
|
|
SEQUENCE supporting iterator protocol.
|
|
- The pyasn1 version dependency bumped (0.2.3), SEQUENCE/SEQUENCE OF
|
|
API calls adjusted to accommodate changed pyasn1 API (in part
|
|
of .setComponentBy*() kw flags).
|
|
- Fixed crash on SNMP engine's invalid message counter increment.
|
|
|
|
Revision 4.3.3, released 2017-02-04
|
|
-----------------------------------
|
|
|
|
- Switched from now unmaintained PyCrypto to PyCryptodome.
|
|
- Switched to new-style classes.
|
|
- NotificationType now allows additional var-binds specified as
|
|
MIB objects. A side effect of this change is that additional
|
|
var-binds can only be added prior to .resolveMibObjects() is
|
|
run.
|
|
- Non-standard (but apparently used by many vendors) Reeder AES192/256
|
|
key localization algorithm implemented and set as default for
|
|
usmAesCfb192Protocol and usmAesCfb256Protocol identifiers.
|
|
Original and more standard implementation can still be used
|
|
with the usmAesBlumenthalCfb192Protocol and
|
|
usmAesBlumenthalCfb192Protocol IDs respectively.
|
|
- TextualConvention.prettyOut() improved to produce prettier and
|
|
more SMI-compliant output.
|
|
- TextualConvention.prettyIn() implemented to handle DISPLAY-HINT
|
|
based value parsing.
|
|
- Fix to NotificationType to make additional var-binds overriding
|
|
MIB objects implicitly included through NOTIFICATION-TYPE OBJECTS.
|
|
- Fix to SNMP engine boots counter persistence on Python 3.
|
|
- Fix to Pythonized MIBs loading when only .pyc files are
|
|
present (e.g. py2exe/cx_freeze environments).
|
|
- Fix broken 3DES key localization and encryption procedures.
|
|
- Updated IP address for demo.snmplabs.com in examples.
|
|
- Missing index added to bundled RFC1213::atEntry MIB table.
|
|
- Twisted integration made Python3 compatible.
|
|
- Accommodated ASN.1 SEQUENCE iteration rules change in upcoming pyasn1 version.
|
|
- Author's email changed, copyright extended to 2017.
|
|
|
|
Revision 4.3.2, released 2016-02-12
|
|
-----------------------------------
|
|
|
|
- Copyright notice added to non-trivial source code files.
|
|
- SNMP table row consistency check added. This change may break
|
|
valid SNMP SET operations on tables if RowStatus column is not
|
|
passed at the very end of var-binds.
|
|
- All SNMP counters now incremented via '+= 1' rather than 'x = x + 1'
|
|
to simplify their tracking by third-party code.
|
|
- Notification originator examples re-pointed to Notification Receiver
|
|
at demo.snmplabs.com.
|
|
- Two more execution observer points added: rfc2576.processIncomingMsg
|
|
and rfc3414.processIncomingMsg to give an insignt on security modules
|
|
internals.
|
|
- TEXTUAL-CONVENTION's DISPLAY-HINT text formatting reworked for better
|
|
performance and encoding accurancy of 'a' and 't' formats.
|
|
- WARNING: security fix to USM - extra user entry clone removed on
|
|
incoming message processing. It made USM accepting SNMPv3 TRAPs
|
|
from unknown SNMP engine IDs.
|
|
- Fix to snmpInvalidMsgs and snmpUnknownSecurityModels MIB symbols
|
|
import at SNMPv3 MP model.
|
|
- Fix to NotificationOriginator to cope with unspecified user callable.
|
|
- Fix to OctetString.prettyOut() to pretty-print Python 3 bytes without
|
|
'b' qualifier.
|
|
- Fix to better pysmi import errors handling.
|
|
- Fix to missing next() in Python 2.5 at pysnmp.hlapi
|
|
|
|
Revision 4.3.1, released 2015-11-12
|
|
-----------------------------------
|
|
|
|
- Added recursive resolution of ObjectIdentifier values at ObjectType
|
|
by converting it to ObjectIdentity.
|
|
- A bunch of convenience shortcuts to rfc1902.ObjectIdentity added
|
|
from rfc1902.ObjectType and rfc1902.NotificationType
|
|
(.addAsn1MibSource(), .addMibSource(), .loadMibs())
|
|
- When pretty printing indices at rfc1902.ObjectType, quote only strings.
|
|
- SNMP overview and PySNMP hlapi tutorial added to documentation.
|
|
- Fix to __doc__ use in setup.py to make -O0 installation mode working.
|
|
- Fix to ObjectIdentity->ObjectIdentifier attributes handover
|
|
- Fixed crash at oneliner compatibility code on EOM response.
|
|
- Fixed crash in hlapi.transport module.
|
|
- Fixed OID resolution issues that roots at node 0 and 2.
|
|
- Fix to MIB builder to fail gracefully on corrupted MIB package encounter.
|
|
- Fix to docs distribution -- now the are Sphinx-buildable out-of-the-box.
|
|
- Source code re-linted
|
|
|
|
Revision 4.3.0, released 2015-09-28
|
|
-----------------------------------
|
|
|
|
- Critical error fixed in key localization procedure for AES192/AES256/3DES
|
|
cyphers. Previous versions might never worked properly in this respect.
|
|
- Initial PySMI integration. Original ASN.1 MIBs could now be parsed, stored
|
|
at a local pysnmp MIBs repository and loaded into SNMP Engine. Relevant
|
|
example scripts added. Obsolete libsmi-based scripts removed.
|
|
- Major rewrite of native SNMPv3 CommandGenerator and NotificationOriginator
|
|
applications towards the following goals:
|
|
|
|
* avoid binding to specific SNMP engine instance to promote single
|
|
SNMP app instance using many SNMP engine instances
|
|
* support two APIs for working with request data: one operates on the
|
|
whole PDU object while the other on PDU contents
|
|
* keep callback context data in stack rather than in stateful application
|
|
cache
|
|
* newly introduced sendVarBinds() method offers a more functional and
|
|
logical signatures.
|
|
* Promote the use of dedicated classes for dealing with OID-value pairs.
|
|
Instances of those classes resemble OBJECT-IDENTITY, OBJECT-TYPE and
|
|
NOTIFICATION-TYPE MIB structures.
|
|
* Oneliner API reworked to become more generic: its LCD configuration
|
|
shortcuts and and var-bindings processing code split off SNMP apps
|
|
classes to stand-alone objects. The whole API also moved up in package
|
|
naming hierarchy and becomes 'pysnmp.hlapi.asyncore' (hlapi is
|
|
apparently an African fish). Old oneliner API remains fully operational
|
|
at its original location.
|
|
* Synchronous oneliner apps redesigned to offer Python generator-based
|
|
API along with a more comprehensive set of accepted parameters.
|
|
* Asyncore-based asynchronous apps reworked to become functions.
|
|
* Twisted API moved entirely into high-level domain to be aligned with
|
|
other high-level APIs. This WILL BREAK backward compatibility for
|
|
those apps that use Twisted API.
|
|
* Keep backward compatibility for all existing major/documented interfaces
|
|
|
|
- Sphinx documentation added to source code and example scripts. Library
|
|
documentation converted from .html into RsT markup.
|
|
- Execution Observer facility implemented to give app an inside view
|
|
of SNMP engine inner workings. This is thought to be a generic
|
|
framework for viewing (and modifying) various internal states
|
|
of pysnmp engine. Previously introduced non-standard APIs (like
|
|
getting peer's transport endpoint which is not suggested in RFCs)
|
|
will be gradually migrated to this new framework.
|
|
- Initial support for the asyncio & Trollius frameworks and
|
|
coroutines-based SNMP Applications interfaces added. Both IPv4 and IPv6
|
|
datagram transports are currently supported.
|
|
- Original asynsock transport and AsyncsockDispatcher renamed into
|
|
asyncore and AsyncoreDispatcher respectively to provide better hint
|
|
to fellow devs on the underlying transport being used. Backward
|
|
compatibility preserved.
|
|
- The asyncore-based transport subsystem extended to support POSIX
|
|
sendmsg()/recvmsg() based socket communication what could be used,
|
|
among other things, in the context of a transparent SNMP proxy
|
|
application. Technically, the following features were brought
|
|
into pysnmp with this update:
|
|
|
|
* Sending SNMP packets from a non-local IP address
|
|
* Receiving IP packets for non-local IP addresses
|
|
* Responding to SNMP requests from exactly the same IP address
|
|
the query was sent to. This proves to be useful when listening
|
|
on both primary and secondary IP interfaces.
|
|
|
|
- Internal oneliner apps configuration cache moved from respective
|
|
apps objects to [a singular] snmpEngine "user context" object.
|
|
That would allow for better cache reuse and allow for a single app
|
|
working with many snmpEngine instances.
|
|
- Oneliner GETBULK Command Generator now strips possible excessive OIDs
|
|
off the bottom of returned var-binds table.
|
|
- Constraints assignment shortcut added to some base rfc1902 types (Integer,
|
|
Integer32, OctetString, Bits). That formally constitutes ASN.1 sub-typing.
|
|
- Built-in debugging is now based on Python logging module.
|
|
- Examples on a single Transport Dispatcher use with multiple SnmpEngine
|
|
instances applicatons added.
|
|
- Example script on transport timeout & retries manipulation added.
|
|
- Example script explaining incoming message's communityName re-mapping added.
|
|
- Broadcast socket option can now be enabled with the .enableBroadcast()
|
|
call for any datagram-based transport (namely, UDP and UDP6).
|
|
- AbstractTransportDispatcher's jobStarted() and jobFinished() methods
|
|
now accept optional 'count' parameter which is a way for an app to indicate
|
|
how many responses are expected or have been processed in bulk.
|
|
- Example script on SNMP Agents UDP broadcast-based discovery added.
|
|
- Oneliner transport object now supports setLocalAddress() method to
|
|
force socket binding to specified local interface.
|
|
- New public DgramSocketTransport.getLocalAddress() returns local endpoint
|
|
address underlying BSD socket is currently bound to.
|
|
- Passing request details to access control callback at CommandResponder
|
|
reworked towards more robust and simple design with the execution observer
|
|
facility.
|
|
- All MIBs rebuilt with pysmi.
|
|
- MIB instrumentation example improved to cover table index building facility.
|
|
- Handle the case of null writer at Debug printer.
|
|
- Do not cache snmpEngineId & snmpAdminString at CommandGenerator to let it
|
|
be reused with many different snmpEngines.
|
|
- TRAP PDU agent address evaluation at proto.api made lazy to improve
|
|
startup time.
|
|
- Multiple fixes to verify pyasn1 decoder.decode() return to withstand
|
|
broken SNMP messages or its components.
|
|
- First attempt made to make some of SNMP Engine settings persistent
|
|
across reboots.
|
|
- Make config.delTransport() returning detached transport object. Asyncio
|
|
examples now use this facility to explicitly shutdown transport object.
|
|
- Parts of SMIv1 remnant MIBs (RFC1213-MIB, RFC1158-MIB) added to provide
|
|
complete compatibility with SMIv1. Symbols defined in these MIBs only
|
|
present in SMIv1 so they can't be substituted with their SMIv2 analogues.
|
|
- MibBuilder.addMibSources() convenience method added.
|
|
- The smi.MibBuilder() will now raise more specific exceptions (MibLoadError,
|
|
MibNotFoundError) on MIB loading problems rather than more generic
|
|
SmiError.
|
|
- The oneliner's MibVariable MIB lookup subsystem redesigned for more
|
|
generality to mimic OBJECT-TYPE macro capabilities related to SNMP
|
|
PDU handling. The two new classed are ObjectIdentity and ObjectType.
|
|
The ObjectIdentity class additionally supports just a MIB module name
|
|
initializer in which case if resolves into either first or last symbol
|
|
in given MIB. Another option is just a MIB symbol initializer without
|
|
specifying MIB module.
|
|
This new subsystem is moved from the scope of oneliner to more common
|
|
pysnmp.smi.rfc1903 scope to more naturally invoke it from whatever
|
|
part of pysnmp requires MIB services.
|
|
- MibBuilder now prepends the contents of environment variables it
|
|
recognizes (PYSNMP_MIB_DIR, PYSNMP_MIB_DIRS, PYSNMP_MIB_PKGS) rather
|
|
than using them instead of its default core MIBs.
|
|
- Removed RowStatus default value as it may collide with possible subclass
|
|
constraints.
|
|
- A few additional MIB tree management methods added to MibViewController
|
|
to better address ordered nature of MIB tree nodes (namely, getFirst*,
|
|
getLast* family of methods).
|
|
- Wheel distribution format now supported.
|
|
- Fix to authoritative engine side snmpEngineID discovery procedure:
|
|
respond with notInTimeWindows rather then with unsupportedSecurityLevel
|
|
at time synchronization phase.
|
|
- Fix to rfc1902.Bits type to make it accepting hex and binary initializers,
|
|
cope with missing bits identifieirs at prettyPrint().
|
|
- Memory leak fixed in CommandForwarder examples.
|
|
- Fix to BULK CommandGenerator to use the same nonRepeaters OIDs across
|
|
multiple GETBULK iterations so returned table for nonRepeaters columns
|
|
would hold the same var-bind.
|
|
- Fix to CommandGenerator to make sendRequestHandle persistent across
|
|
multiple iterations of GETNEXT/GETBULK queries.
|
|
- Fix to sendNotification() error handling at NotificationOriginator.
|
|
- Fix to preserve possible 'fixed length' setting atrfc1902.OctetString
|
|
on clone()'ing and subtype()'ing.
|
|
- Fix to rfc1902.OctetString & Bits to base them on OctetString class to
|
|
make the 'fixed length' property working.
|
|
- Fix to .clone() method of rfc1902.Bits class to make its signature
|
|
matching the rest of classes. This may broke code which used to pass
|
|
namedValue parameter positionally rather than binding it by name.
|
|
- Fix to PDU translation service (proto.proxy.rfc2576) to make it
|
|
initializing errorIndex & errorStatus components of the resulting PDU.
|
|
- Fix to MsgAndPduDispatcher.sendPdu() to clean up request queue on
|
|
pysnmp-level processing failure.
|
|
- Fix to SNMPv1/v2c message processing subsystem to make it serving
|
|
unique PDU request-id's in both outgoing and incoming confirmed
|
|
and response PDU types. Duplicate request-id's in unrelated PDUs may
|
|
cause cache errors otherwise.
|
|
- Fix to licensing terms of multiple twisted backend modules to make
|
|
the whole pysnmp package licensed under BSD 2-Clause license. This
|
|
change has been explicitly permitted by the original modules authors.
|
|
- Fix to asyncore-based transport not to use asyncore's cheap inheritance
|
|
from socket object what caused warnings.
|
|
- Fix at NotificationOriginator to make is using MibInstrumentationController
|
|
when expanding Notification OBJECTS into Managed Objects Instances.
|
|
- Missing wrongLength and wrongEncoding SMI errors added.
|
|
- Fix to file descriptor leak at MibBuilder.
|
|
- Fix to rfc2576.v2ToV1() to ignore impossible errorStatus.
|
|
- Fix to rfc2576.v1ToV2() to reset ErrorStatus==noSuchName on proxying.
|
|
- Fix to smi.builder to explicitly fail on any MIB file access error
|
|
(but ENOENT) and raise IOError uniformly on any directory/egg access
|
|
failure.
|
|
- Fix to infinite loop at config.delV3User().
|
|
|
|
Revision 4.2.5, released 2013-10-02
|
|
-----------------------------------
|
|
|
|
- License updated to vanilla BSD 2-Clause to ease package use
|
|
(http://opensource.org/licenses/BSD-2-Clause).
|
|
- A dozen of lightweight Twisted-based example scripts replaced more
|
|
complex example implementations used previously.
|
|
- SNMP Proxy example apps separated into a larger set of more specialized
|
|
ones.
|
|
- Most of Command Generator examples re-pointed to a live SNMP Agent
|
|
at demo.snmplabs.com to ease experimentation and adoption.
|
|
- Multithreaded oneliner CommandGenerator example added.
|
|
- Packet-level SNMP API (pysnmp.proto.api) getErrorIndex() method can now
|
|
be instructed to ignore portentially malformed errorIndex SNMP packet
|
|
value what sometimes happens with buggy SNMP implementations.
|
|
- Standard SNMP Apps and built-in proxy now ignores malformed errorIndex
|
|
value.
|
|
- Built-in logging now includes timestamps.
|
|
- Multi-lingual capabilities of all CommandGenerator & NotificationOriginator
|
|
apps re-worked and improved. For instance it is now it's possible to run
|
|
getBulk() against a SNMPv1 Agent invoking built-in SNMP Proxy behind the
|
|
scene.
|
|
- The $PYSNMP_MIB_DIR & $PYSNMP_MIB_DIRS & $PYSNMP_MIB_PKGS path separator
|
|
made platform-specific.
|
|
- Change to rfc2576.v1tov2() logic: errorStatus = noSuchName is now
|
|
translated into rfc1905.noSuchObject exception value for *all* var-bindings
|
|
at once. Although RFC2576 does not suggest error-status -> v2c exception
|
|
translation, historically pysnmp used to perform it for a long time so we
|
|
can't easily stop doing that.
|
|
- Exception re-raising improved at MibInstrumController.flipFlopFsm() and
|
|
asynsock/twisted dispatchers so that original traceback is preserved.
|
|
- A single instance of transport dispatcher can now serve multiple
|
|
receivers (identified by IDs) chosen by a public data routing method.
|
|
- SnmpEngine.[un]registerTransportDispatcher() methods now accept optional
|
|
receiver ID token to be used by transport dispatcher's data router. This
|
|
allows for multiple SNMP engines registration with a single transport
|
|
dispatcher.
|
|
- Distribute is gone, switched to setuptools completely.
|
|
- The snmpCommunityTable row selection improved to follow RFC2576, clause
|
|
5.2.1.
|
|
- Asyncore-based dispatcher attempts to use poll() whenever available
|
|
on the platform. It would help handling a really large number (>1024)
|
|
of file descriptors.
|
|
- AsynCommandGenerator.makeReadVarBinds() generalized into a new
|
|
makeVarBinds() method which replaces somewhat redundant code at setCmd()
|
|
and AsynNotificationOriginator.sendNotification().
|
|
- AsynCommandGenerator.uncfgCmdGen() & AsynNotificationOriginator.uncfgCmdGen()
|
|
methods now accept optional authData parameter to remove specific entries
|
|
from LCD. This can be useful for modifying security parameters for
|
|
specific securityName.
|
|
- SNMP credentials management reworked to separate userName from securityName
|
|
in snmpCommunityEntry and usmUserEntry tables. Changes made to addV1System(),
|
|
addV3User() functions as well as to their oneliner's wrappers.
|
|
- The contextEngineId parameter of config.addV3User() and auth.UsmUserData()
|
|
renamed into securityEngineId as it's semantically correct
|
|
- Oneliner UsmUserData() and CommunityData() classes now support clone()'ing
|
|
to facilitate authentication data management in user applications.
|
|
- Oneliner transport target classes now support the getTransportInfo()
|
|
method that returns network addresses used on protocol level.
|
|
- Oneliner CommandGenerator.getNext() & .getBulk() methods now support the
|
|
maxCalls kwarg to limit the maximum number of iterations to perform.
|
|
- The config.addSocketTransport() helper renamed into config.addTransport()
|
|
and improved by automatically instantiating compatible TransportDispatcher
|
|
making it dispatcher-agnostic. As an additional bonus, application may not
|
|
call registerTransportDispatcher() as it would be called by addTransport().
|
|
- The SnmpV3MessageProcessingModel.getPeerEngineInfo() method is implemented
|
|
to communicate discovered peer SNMP engine information to SNMP apps what
|
|
can be used for fine usmUserTable configuration.
|
|
- AsynNotificationOriginator.cfgCmdGen() does not take into account
|
|
securityModel & securityLevel when reducing LCD access via addTrapUser().
|
|
This improves LCD consistency on sparse add/del operatons but also
|
|
does not let you to configure different securityModels per securityname
|
|
at VACM though the cfgCmdGen() wrapper.
|
|
- MIB builder traceback formatting and reporting improved.
|
|
- SNMP Engine object now has a snmpEngineID attribute exposed.
|
|
- Fix to inet_ntop()/inet_pton() support on Windows at TRANSPORT-ADDRESS-MIB.
|
|
- Fix to usmUserSecurityName table column implementation -- automatic value
|
|
generation from index value removed.
|
|
- Fix and significant logic rework of snmpCommunityTable to make it working
|
|
in both Generator and Responder modes and better follow RFC2576
|
|
requirements on sequential entries lookup and selection. As a side effect,
|
|
untagged snmpCommunityTable entries will *not* match tagged
|
|
snmpTargetAddrTable entries and vice versa.
|
|
- Fix to Twisted-based NotificationOriginator to make it serving INFORMs again.
|
|
- Fix to rfc2576.v1tov2() logic: errorStatus = noSuchName is now translated
|
|
into rfc1905.noSuchObject exception value for *all* var-bindings. Although
|
|
this is not mentioned in RFC, it looks as a more consistent approach.
|
|
- Fix of rounding error to base I/O dispatcher's next timer call calculation.
|
|
- Explicit twisted dispatcher's timer resolution (of 1 sec) removed to make
|
|
use of global default of 0.5 sec.
|
|
- Fix to twisted/udp non-default local endpoint binding features. Common
|
|
socket ('host', port) notation is now supported.
|
|
- Fix to Twisted-based transport to make it closing UDP port / UNIX pipe
|
|
on shutdown.
|
|
- Fix to Twisted-based dispatcher not to close transport on unregistration
|
|
at dispatcher as transports can potentially be reused elsewhere.
|
|
- Fix to asyncore-based transport to work only with AsynsockDispatcher's
|
|
socket map and not to touch default asyncore's one. The latter have caused
|
|
dispatcher/transport restarting issues.
|
|
- The delV3User() function improved to drop all rows from USM table that
|
|
were cloned from the target one.
|
|
- Fix to exceptions handling at MsgAndPduDispatcher.sendPdu() to avoid
|
|
sendPduHandle miss (followed by system crash) on cache expiration run.
|
|
- Break cyclic references at CommandResponder and NotificationReceiver apps
|
|
through close() method.
|
|
- Fix to octet string typing at 3DES codec (used to throw an exception).
|
|
- Fix to SnmpAdminString, SnmpTagList, SnmpTagValue types to make them
|
|
supporting UTF-8 initializers.
|
|
- Fix to v1/v2c message processing module which used to refer to a
|
|
bogus stateReference in some cases what causes SNMP engine crashes.
|
|
- Fix to IPv6 transport to zero ZoneID, FlowID and ScopeID components
|
|
sometimes coming along with incoming packet.
|
|
- Fix to SNMPv1 MP module to pass stateReference to registered app on
|
|
unconfirmed notifications reception (to let NotificationReceiver
|
|
Apps browsing request details).
|
|
(transport information at the moment) at SNMP engine.
|
|
- Asyncsock sockets now configured with SO_REUSEADDR option to fix possible
|
|
Windows error 10048.
|
|
- Gracefully handle malformed SnmpEngineID at USM coming from SNMPv3 header.
|
|
- Typos fixed in error-status constants at CommandResponder
|
|
- Missing import added to oneliner auth module.
|
|
- Cosmetic changes to v3arch example scripts.
|
|
|
|
Revision 4.2.4, released 2013-01-30
|
|
-----------------------------------
|
|
|
|
- SNMPv3 high-level and native API examples reworked and extended to cover
|
|
many use cases.
|
|
- The missing functionality of NOTIFICATION-TYPE objects being looked up
|
|
at local Management Instrumentation and attached to TRAP/INFORM message
|
|
by Notification Originator is now fully implemented.
|
|
- The missing functionality of passing Response PDU contents of INFORM
|
|
request is now implemented at Notification Originator app. The return
|
|
value of NotificationOriginator.sendNotification is now a composite object
|
|
that includes errorStatus, errorIndex and varBinds.
|
|
- The missing functionality of passing lookupNames & lookupValues params
|
|
to Notification Originator is now implemented. It may make sense for
|
|
INFORMs.
|
|
- The missing functionality of passing contextName to oneliner
|
|
version of NotificationOriginator.sendNotification is now implemented.
|
|
- Oneliner example apps now include cases where non-default SNMP
|
|
ContextEngineId/ContextName/SecurityEngineId is used.
|
|
- The contextName parameter of SnmpContext.getMibInstrum made optional.
|
|
- AbstractMibInstrumController class added as a base class for all possible
|
|
kinds of Management Instrumentation controllers.
|
|
- Report package version on debugging code initialization.
|
|
- MibInstrumController.getMibBuilder() added.
|
|
- I/O sockets buffer sizes made configurable, minimum default is now
|
|
forced to be no less than 2**17 (to fit two huge datagrams).
|
|
- Catch possible exceptions on pyasn1 encoder invocation.
|
|
- VACM modules converted from a function into an object to let it keep
|
|
state (caches) in the future.
|
|
- Unnecessary MibSource explicit initialization calls removed at MibBuilder.
|
|
- Example configuration for Net-SNMP's snmptrapd added.
|
|
- Cast additionalVarBinds into ObjectIdentifier type at
|
|
NotificationOriginator.sendNotification()
|
|
- Standard SNMPv3 Apps hardened to catch protocol-related exceptions and
|
|
report them as errorIndication's.
|
|
- Catch and mute possible failure of getsockname(), that seems to happen
|
|
on Windows only so far.
|
|
- Memory leak fixed at oneliner cache of already configured targets.
|
|
- Fixes to at AsynNotificationOriginator.sendNotification() to make
|
|
a) the notificationType param mandatory b)t e varBinds param really
|
|
optional
|
|
- Fixes to ContextEngineId/ContextName support at the oneliner API: now
|
|
both items should be passed to request PDU through Cmd() request
|
|
initiation method, the items of authData object should be used only for
|
|
LCD configuration.
|
|
- Fix to MibVariable handling of the MIB, <empty-symbol> initializers.
|
|
- Fix to outgoing queue processing order at socket transport. Now
|
|
it's a FIFO discipline rather than LIFO.
|
|
- Fix to NotificationOriginator's additionalVarBinds parameter - it is
|
|
not mandatory anymore with the oneliner API. Also additionalVarBinds
|
|
defaulted value changed from None to () meaning no var-binds.
|
|
- Attempt to convert Windows style EOL into UNIX ones in MIB source
|
|
modules appeared to be unnecessary and even destructive to modules
|
|
data in some cases. So the conversion code removed altogether.
|
|
- Fix to isAccessAllowed() error handling at NotificationOriginator. System
|
|
used to crash on access denied condition.
|
|
- Fix to NotificationOriginator to make it use system uptime and trap OID
|
|
values from SNMP engine's instrumentation rather then from SNMP context.
|
|
- Fix a couple of bugs at MibTable* logic involved for table instances
|
|
creation.
|
|
- Fix to Management Instrumentation code to handle cases of non-initialized
|
|
or not-compliant-to-constraints Managed Objects Instances.
|
|
- Fix to Management Instrumentation code to make table row removal through
|
|
SNMP working again. Wrong method (instumClone) was probed at terminal
|
|
MIB nodes values instead of the right one (setValue).
|
|
|
|
Revision 4.2.3, released 2012-09-06
|
|
-----------------------------------
|
|
|
|
- SECURITY FIX: USM subsystem did not verify securityLevel of a request
|
|
to an authoritative SNMP engine 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 [Asyn]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 [Asyn]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.
|
|
- Oneliner UsmUserData, UdpTransportTarget, Udp6TransportTarget instances
|
|
are not hashable anymore as they are intended to act more like a data
|
|
structure than object.
|
|
- Built-in debugger now supports negating debugging categories.
|
|
- An async/getgen.py example script added.
|
|
- Fix to MIB data reading routine to make it working with possible
|
|
Windows end-of-line's.
|
|
- 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()
|
|
- Fix to maxSizeResponseScopedPDU calculation at rfc3414/service.py.
|
|
- Dedicated 'withmib' example set is obsolete and removed.
|
|
- Another SNMP proxy example app added (1to3.py).
|
|
- Fix to MIB modules loading code to make it using __import__() properly.
|
|
This also makes pysnmp working again with Python 3.3rc0.
|
|
- Typo fix to snmpInASNParseErrs MIB instance object.
|
|
- Typo fix to errind.EngineIdMismatch class and its instance.
|
|
|
|
Revision 4.2.2, released 2012-04-21
|
|
-----------------------------------
|
|
|
|
- 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 (including RFC1155 and RFC1213) were moved to
|
|
pysnmp-mibs as pysnmp is 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, released 2011-11-07
|
|
-----------------------------------
|
|
|
|
- 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 var-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, released 2011-09-22
|
|
-------------------------------------
|
|
|
|
- Fix to SNMPv1 Trap PDU agentAddress setter shortcut method.
|
|
|
|
Revision 4.1.16c, released 2011-08-14
|
|
-------------------------------------
|
|
|
|
- Missing module import fixed in privacy subsystem
|
|
|
|
Revision 4.1.16b, released 2011-08-13
|
|
-------------------------------------
|
|
|
|
- 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, released 2011-03-17
|
|
-------------------------------------
|
|
|
|
- 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 conversion 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, released 2010-12-13
|
|
-------------------------------------
|
|
|
|
- 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, released 2010-07-15
|
|
-------------------------------------
|
|
|
|
- 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, released 2010-02-09
|
|
-------------------------------------
|
|
|
|
- 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, released 2009-12-03
|
|
-------------------------------------
|
|
|
|
- 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, released 2009-08-21
|
|
-------------------------------------
|
|
|
|
- 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, released 2008-05-25
|
|
-------------------------------------
|
|
|
|
- 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, released 2007-11-28
|
|
------------------------------------
|
|
|
|
- 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 conversion 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, released 2007-08-14
|
|
------------------------------------
|
|
|
|
- UNSTABLE ALPHA RELEASE.
|
|
- SMI/dispatcher timeout conversion 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, released 2007-02-19
|
|
------------------------------------
|
|
|
|
- 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 conversion 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
|
|
conversion.
|
|
- 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, released 2006-05-25
|
|
------------------------------------
|
|
|
|
- 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, released 2005-11-04
|
|
------------------------------------
|
|
|
|
- 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, released 2005-08-16
|
|
------------------------------------
|
|
|
|
- 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, released 2005-07-28
|
|
------------------------------------
|
|
|
|
- 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, released 2005-07-12
|
|
------------------------------------
|
|
|
|
- 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, released 2005-06-29
|
|
------------------------------------
|
|
|
|
- UNSTABLE ALPHA RELEASE.
|
|
- SNMPv3 code first published
|
|
- SNMP engine and applications implemented on library level
|
|
- Major re-design towards SNMPv3-style API.
|
|
|
|
Revision 4.0.2a, released 2005-03-01
|
|
------------------------------------
|
|
|
|
- Adopted to slightly changed asyncore API (as shipped with python 2,4)
|
|
|
|
Revision 4.0.1a, released 2004-11-18
|
|
------------------------------------
|
|
|
|
- Minor bug/typo fixes, mostly in example/ scripts.
|
|
|
|
Revision 4.0.0a, released 2004-11-15
|
|
------------------------------------
|
|
|
|
- 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.
|